我将尝试把一个数据库从一个主机转移到另一个主机,且在不同的用户中使用,它们都使用PostgreSQL 9.4。
我已经按照多个答案所建议的步骤进行了操作,但我仍然对其中一部分感到困惑。
我使用以下命令导出原始数据库:
在目标机器上,在清除启动(initdb)后,我执行以下操作:
1. 创建用户test:
4. 现在,如果我尝试使用以下命令进行导入:
我已经按照多个答案所建议的步骤进行了操作,但我仍然对其中一部分感到困惑。
我使用以下命令导出原始数据库:
pg_dump -d test --clean --no-owner -f test.sql
在目标机器上,在清除启动(initdb)后,我执行以下操作:
1. 创建用户test:
createuser test
2. 创建数据库test并将其所有者设置为test:
createdb -O test test
3. 现在,如果我执行 psql -l
命令,会显示test - test作为名称和所有者。4. 现在,如果我尝试使用以下命令进行导入:
psql -U test -d test -f test.sql
,则会出现大量错误。ERROR: relation "public.x" does not exist
ERROR: index "y" does not exist
ERROR: sequence "z" does not exist
ERROR: table "u" does not exist
ERROR: must be owner of extension plpgsql
ERROR: must be owner of schema public
ERROR: schema "public" already exists
然而,即使存在所有这些错误,导入似乎已经完成,对目标机器进行转储最终得到了与源文件相同的SQL文件(除了最后两行超级用户行)。
我应该担心这些错误吗?为什么会出现这种情况,我应该怎样做才能避免这些错误?这是在服务器/用户之间移动数据库的推荐方法吗?
psql -v ON_ERROR_STOP=1 ...
重新运行以查看第一个错误。 - Craig Ringer