我在 Docker 容器(特别是 PostGIS)中运行 Postgres。如果我从生产数据库创建数据库转储,然后将其导入到容器中,我收到的输出看起来成功,但没有创建任何表。我注意到创建了一个schema,但这就是我所能看到的。 但是,如果我重试导入,它会抱怨索引等已经存在,所以它正在做某事,但我不知道是什么。
可能值得注意的是,我暂时从容器中删除了卷,以消除卷权限问题的可能性。
创建转储:
pg_dump postgres://CONNECTIONSTRING > dump.sql
然后在 psql 中运行
CREATE DATABASE db_name;
\i dump.sql
我收到了
SET
SET
SET
SET
SET
set_config
------------
(1 row)
SET
SET
SET
SET
CREATE SCHEMA
ALTER SCHEMA
CREATE EXTENSION
COMMENT
SET
SET
CREATE TABLE
ALTER TABLE
CREATE SEQUENCE
…truncated
但是
\dt
说“没有找到任何关系”
如果我再次导入:
psql:dump.sql:64: ERROR: relation "accounts" already exists
ALTER TABLE
…truncated
正在创建模式,但是我可以使用
\dn
看到它。这大约是我知识的极限,但是,我真的不知道这意味着什么,而且绝对不知道数据去哪里了!
问题是转储创建了一个所有表都位于其中的模式。为了看到它,我需要设置搜索路径以在该模式中查找:
SET search_path TO tracker_production;