我有一个建议表单stackoverflow.com在特定数据库中创建模式,如下所示:
CREATE DATABASE foo;
\connect foo;
CREATE SCHEMA yourschema;
但我收到的错误如下:
错误:语法错误在“\”第2行或附近:\ n \ n \ n \ n \连接foo; ^
*** 错误 ** *
错误:“\”
处或附近的语法错误
情况:
登录为postgress
创建用户u1
使用所有者u1创建数据库db1
\连接u1
创建模式s1
请帮我创建特定数据库中的模式。
答案 0 :(得分:12)
如果 - 且仅当 - 你正在使用psql时,这是有效的:
postgres@berry-pc:~$ psql template1
psql (8.4.10)
Type "help" for help.
template1=# CREATE DATABASE foo;
CREATE DATABASE
template1=# \connect foo;
psql (8.4.10)
You are now connected to database "foo".
foo=# \connect template1
psql (8.4.10)
You are now connected to database "template1".
template1=# DROP DATABASE foo;
DROP DATABASE
template1=# \q
\connect
是一个psql命令。这不是普通的SQL,所以你不能在.sql文件中使用它。据我所知,从sql文件中无法做到这一点。这背后的基本原理是,一旦您想要使用不同的数据库,就应该重新连接到不同的数据库。这是用于数据库分离。 MySQL实现use $database
语法的原因是因为缺少模式,但PostgreSQL没有这样的命令,因为数据库应该在模式中分离,而不是数据库。