Postgres在特定数据库中创建架构

AVA*_*AVA 9 sql postgresql schema

我有一个建议表单stackoverflow.com在特定数据库中创建模式,如下所示:

CREATE DATABASE foo; 
 \connect foo; 
CREATE SCHEMA yourschema; 
Run Code Online (Sandbox Code Playgroud)

但我得到的错误如下:

错误:语法错误在"\"LINE 2处或附近:\n \n \n \n \n \n \n串连错误 ^

*** 错误 ***

错误:"\"处或附近的语法错误

情况:

以postgress身份登录
create user u1
create owner db1 with owner u1
\ connect u1
create schema s1

请帮我在特定的数据库中创建模式.

Ber*_*rak 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
Run Code Online (Sandbox Code Playgroud)

\connect是一个psql命令.这不是普通的SQL,所以你不能在.sql文件中使用它.据我所知,从sql文件中无法做到这一点.这背后的基本原理是,一旦您想要使用不同的数据库,就应该重新连接到不同的数据库.这是用于数据库分离.MySQL实现use $database语法的原因是因为缺少模式,但PostgreSQL没有这样的命令,因为数据库应该在模式中分离,而不是数据库.