我的目标是将 .sql 转储从我的服务器导入到 project_devel 数据库中。我遇到了一个令人沮丧的问题,当我从 .sql 文件加载数据时, -d [databasename] 选项似乎被忽略了。相反(您可以在输出中看到大约 12 行),.sql 文件可能会告诉导入器导入另一个数据库。关于为什么会发生这种情况以及如何强制数据进入我用 -d 指定的数据库的任何线索?
我最终通过将我在 database.yml 中的开发数据库名称更改为 project_prod 对其进行了创可贴,因为我的目标只是在本地加载生产数据并调试一些东西。
我用来导入的命令:
YeastFlakes:newproject new$ psql -h /tmp -d project_devel -f prod_dump_2013-02-07_09-00.sql
输出:
You are now connected to database "postgres" as user "new".
SET
SET
SET
psql:prod_dump_2013-02-07_09-00.sql:15: ERROR: role "project" already exists
ALTER ROLE
psql:prod_dump_2013-02-07_09-00.sql:17: ERROR: role "postgres" already exists
ALTER ROLE
psql:prod_dump_2013-02-07_09-00.sql:19: ERROR: role "replication" already exists
ALTER ROLE
psql:prod_dump_2013-02-07_09-00.sql:31: ERROR: database "project_prod" already exists
REVOKE
REVOKE
GRANT
GRANT
You are now connected to database "project_prod" as user "new".
SET
SET
SET
SET
SET
SET
CREATE EXTENSION
COMMENT
SET
SET
SET
psql:prod_dump_2013-02-07_09-00.sql:85: ERROR: relation "active_admin_comments" already exists
ALTER TABLE
psql:prod_dump_2013-02-07_09-00.sql:99: ERROR: relation "active_admin_comments_id_seq" already exists
输出持续一段时间......