PostgreSQL 9.6 – 无法连接到从自定义模板数据库创build的数据库

我创build了一个数据库foo ,我正在使用它作为模板数据库来创build其他数据库。

我正在一个Docker容器中运行所有的PostgreSQL(不知道这是否与手头的问题有关)。

这是(截断的)SQL

 CREATE DATABASE foo WITH ENCODING 'UTF8' template0; \i db_schema_foo.sql -- Create extensions -- Initialise db with data etc ... CREATE DATABASE foobar TEMPLATE foo; 

(截断)控制台输出:

 CREATE DATABASE You are now connected to database "foo" as user "postgres". CREATE TABLE CREATE INDEX CREATE TABLE CREATE INDEX CREATE TABLE ... CREATE INDEX CREATE TABLE CREATE INDEX CREATE TABLE CREATE TABLE CREATE TABLE CREATE TABLE CREATE TABLE CREATE TABLE CREATE INDEX CREATE TABLE CREATE INDEX CREATE TABLE CREATE INDEX CREATE INDEX CREATE INDEX CREATE DATABASE FATAL: database "foobar" does not exist psql:/docker-entrypoint-initdb.d/create_databases.sql:82: \connect: FATAL: database "foobar" does not exist 

从控制台,我假设foofoobar都创build – 为什么我不能连接到数据库foobar

使用psql命令\l来查看哪些数据库存在。

我希望数据库foobar不存在。

这将意味着CREATE DATABASE语句失败。 你能得到这个错误信息吗?

我的怀疑是创build数据库失败,因为你仍然连接到模板数据库foo 。 您只能使用没有活动连接的数据库作为模板。

输出中的CREATE DATABASE表示数据库是否成功创build,如果有错误并且没有警告,就像这样:

 t=# set client_min_messages TO fatal; SET t=# create database t; t=# set client_min_messages TO warning; SET t=# create database t; ERROR: database "t" already exists 

不会有这样的输出 – CREATE DATABASE所以下一行FATAL: database "foobar" does not exist (与创build知识库一起)导致OP连接到不同的cluser或不同的数据库

在私人聊天中,我们发现创build的数据库是“Foobar”,而试图连接的数据库是Foobar ,因此“Foobar”并不存在,就像“Foobar”一样