我目前正在为一个学校项目创建一个 API,一切正常。我的设置是:Node v10、Postgres、Koa 等等...
我目前有这个:
CREATE ROLE sa WITH LOGIN PASSWORD 'some-password.';
CREATE DATABASE master WITH OWNER sa;
\c master;
Run Code Online (Sandbox Code Playgroud)
当 init 脚本在 docker 机器中运行时,我得到的输出是这样的:
CREATE ROLE
CREATE DATABASE
You are now connected to database "master" as user "postgres".
Run Code Online (Sandbox Code Playgroud)
所以我确实将文件更改为这样的:
CREATE ROLE sa WITH LOGIN PASSWORD 'some-password.';
CREATE DATABASE master WITH OWNER sa;
CONNECT TO master AS main USER sa;
Run Code Online (Sandbox Code Playgroud)
我收到一个语法错误:
STATEMENT: CONNECT TO master AS sa USER sa;
psql:/docker-entrypoint-initdb.d/init.sql:4: ERROR: syntax error at or near "CONNECT"
Run Code Online (Sandbox Code Playgroud)
我在文档中找不到任何地方(或者看起来不太好)如何从 .sql 文件连接到具有特定用户的数据库。
我将如何与其所有者(即 .sql 文件中的“sa”)连接到“master”?
Mat*_*isz 33
您可以通过终端中的此命令来执行此操作
psql -d database -U username
Run Code Online (Sandbox Code Playgroud)
eng*_*rgh 23
您可以通过 psql 中的此命令执行此操作:
\c db_name usr_name
Run Code Online (Sandbox Code Playgroud)
小智 12
这里我假设您有一个名为“a.sql”的 SQL 文件,其中包含文件中的代码行。
CREATE ROLE sa WITH LOGIN PASSWORD 'some-password.';
CREATE DATABASE master WITH OWNER sa;
\c master;
Run Code Online (Sandbox Code Playgroud)
现在您正在使用“psql”命令行界面 (CLI) 运行此脚本,因此您会收到如下消息...
CREATE ROLE
CREATE DATABASE
You are now connected to database "master" as user "postgres".
Run Code Online (Sandbox Code Playgroud)
现在,需要注意的是,由于“\c master”与用户“postgres”连接到数据库“master”,因为您传递了“postgres”用户的凭据。那么我是否在这里,如果是,那么您必须传递不同用户的用户名和密码,即“sa”,如下所示。
psql -h localhost -p 5432 -U sa -f a.sql master
Run Code Online (Sandbox Code Playgroud)
现在,它会提示输入“sa”用户的密码,最后,您的脚本将运行并且您将连接到“sa”用户。
归档时间: |
|
查看次数: |
33434 次 |
最近记录: |