我目前正在为学校项目创建一个API,一切都很好。我的设置是:Node v10,Postgres,Koa等......
我目前有这个:
CREATE ROLE sa WITH LOGIN PASSWORD 'some-password.';
CREATE DATABASE master WITH OWNER sa;
\c master;
当init脚本在docker机器上运行时,我得到的输出就是这个:
CREATE ROLE
CREATE DATABASE
You are now connected to database "master" as user "postgres".
所以我确实将文件更改为:
CREATE ROLE sa WITH LOGIN PASSWORD 'some-password.';
CREATE DATABASE master WITH OWNER sa;
CONNECT TO master AS main USER sa;
我收到语法错误:
STATEMENT: CONNECT TO master AS sa USER sa;
psql:/docker-entrypoint-initdb.d/init.sql:4: ERROR: syntax error at or near "CONNECT"
我无法在docs中找到任何地方(或者看起来非常好)如何从.sql文件连接到具有特定用户的数据库。
我如何连接到' master'与它的主人,这是' sa'来自.sql文件?
答案 0 :(得分:2)
您可以通过psql中的以下命令执行此操作:
\c db_name usr_name
答案 1 :(得分:1)
我的假设是你有一个名为" a.sql"的SQL文件。并包含文件中的代码行。
CREATE ROLE sa WITH LOGIN PASSWORD 'some-password.';
CREATE DATABASE master WITH OWNER sa;
\c master;
现在使用" psql"运行此脚本命令行界面(CLI),因此您将收到如下消息...
CREATE ROLE
CREATE DATABASE
You are now connected to database "master" as user "postgres".
现在,需要注意的是你已连接到数据库" master"因为" \ c master"与用户" postgres"因为你通过了" postgres"用户。我是不是就在这里,如果是,那么你必须为不同的用户传递用户和密码,即" sa"如下。
psql -h localhost -p 5432 -U sa -f a.sql master
现在,它会提示输入" sa"用户,最后,您的脚本将运行,您将连接到" sa"用户。