11

次のように、特定のデータベースにスキーマを作成するための1つの提案フォームstackoverflow.comを取得しました。

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

しかし、次のようなエラーが発生します。

エラー: "\"での構文エラー行2:\ connect foo; ^

***エラー** *

エラー:「\」またはその近くの構文エラー

状況 :

postgressとしてログインし ます。createuseru1create database db1 with owner u1 \ connect u1
create schema 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

\connectpsqlコマンドです。これは通常のSQLではないため、.sqlファイルで使用することはできません。私の知る限り、SQLファイル内からそれを行う方法はありません。この背後にある理論的根拠は、別のデータベースを使用する場合は、別のデータベースに再接続する必要があるということです。これはデータベースの分離用です。MySQLが構文を実装した理由use $databaseは、スキーマが不足しているためですが、データベースはデータベースではなくスキーマで分離する必要があるため、PostgreSQLにはそのようなコマンドがありません。

于 2012-08-14T09:45:35.133 に答える