在特定的数据库中创建Postgres模式

12

我从stackoverflow.com得到了一个建议,要在特定的数据库中创建模式,如下所示:

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

但我遇到了以下错误:

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

*** 错误 ***

错误:在“\”附近的语法错误

情况:

以postgress身份登录
创建用户u1
使用u1作为db1的所有者创建数据库
使用\connect u1连接到u1
创建模式s1

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


你是如何尝试连接数据库的?你是使用 psql 命令行工具吗? - Berry Langerak
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没有这样的命令,因为数据库应该被分隔成模式而不是分开成不同的数据库。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接