11

我收到了一份来自 stackoverflow.com 的建议,用于在特定数据库中创建模式,如下所示:

CREATE DATABASE foo; 
 \connect foo; 
CREATE SCHEMA yourschema; 

但我收到如下错误:

错误:“\”第 2 行或附近的语法错误:\connect foo; ^

***错误** *

错误:“\”处或附近的语法错误

情况 :

以 postgress 身份登录
创建用户 u1
创建数据库 db1 所有者为 u1
\connect u1
创建架构 s1

请帮助我在特定数据库中创建模式。

4

1 回答 1

13

这有效,当且仅当您使用 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 没有这样的命令,因为数据库应该在模式而不是数据库中分开。

于 2012-08-14T09:45:35.133 回答