令人困惑的psql错误:无法连接到服务器:致命:角色“根”不存在错误

时间:2020-11-08 21:27:40

标签: postgresql docker

我正在尝试使用postgre sql的docker image使用spring构建RESTapi。当我尝试运行脚本来构建数据库和创建表时,我遇到了这个错误。

psql: error: could not connect to server: FATAL:  role "root" does not exist

我知道有很多关于SO的帖子提出了类似的问题。我仍然感到困惑的原因是,解决方案中提供的说明始终是使用-U标志来指定root用户以外的用户。但是,当我尝试运行此脚本时,我已经在这样做了,所以不确定是什么问题。

//copy the script to my docker container
$ docker cp expensetracker_db.sql postgresdb:/

//build container and enter bash to execute the script
docker container exec -it postgresdb bash

//succeeds. try to run the sql script
$ psql -U postgres ==file expensetracker_db.sql

//and...
psql:expensetracker_db.sql:1: ERROR:  database "expensetrackerdb" does not exist
DROP ROLE
CREATE ROLE
psql:expensetracker_db.sql:5: error: \connect: FATAL:  database "expensetrackerdb" does not exist

我是docker的新手,所以请原谅我用这种语言描述这种情况所犯的任何错误。我怀疑这可能是很明显的,我没有注意到我的方法。但是对我来说,似乎我遇到的问题应该由运行脚本时提供的-U参数来解决。

在此脚本。对我来说,语法错误似乎没有问题,但是我的SQL有点生锈。

drop database expensetrackerdb;
drop user expensetracker;
create user expensetracker with password 'password';
create database expensetrackerdb with template=template0 owner=expensetracker
\connect expensetrackerdb;
alter default privaleges grant all on tables to expensetracker;
alter default privaleges grant all on sequences to expensetracker;

create table et_users(
    user_id integer primary key not null,
    first_name varchar(28) not null,
    last_name varchar(28) not null,
    email varchar(30) not null,
    password text not null
);

create table et_categories(
    category_id integer primary key not null,
    user_id integer not null,
    title varchar(20) not null,
    description varchar(50) not null
);

alter table et_categories add constraint cat_users_fk
foreign key (user_id) references et_users(user_id);

create table et_transactions(
    transaction_id integer primary key not null,
    category_id integer not null,
    user_id integer not null,
    amount numeric(18,2) not null,
    note varchar(50) not null,
    transaction_data bigint not null
);

alter table et_transactions add constraint trans_cat_fk
foreign key (category_id) references et_categories(category_id);
alter table et_transactions add constraint trans_user_fk
foreign key (user_id) references et_users(user_id);

create sequence et_users_seq increment 1 start 1;
create sequence et_categories_seq increment 1 start 1;
create sequence et_transactions_seq increment 1 start 1000;

0 个答案:

没有答案