1

我有一个包含 700 多个表的大型数据库,大小约为。23GB,我正在尝试将此数据库导出到测试环境,问题是当我进行还原时,它不包含任何外键约束,目前我无法弄清楚原因,但似乎数据本身是正确的,所有表、PK、函数和视图也都恢复了,所以唯一剩下的就是外键,postgres 日志不会显示错误。

我已经在谷歌上搜索了几天,但没有运气。而且我很确定这不是正确的方法,但这是我现在所拥有的,所以我只是为了测试目的而试一试,你永远不会知道。

如此简单明了,有什么方法可以只将外键导出到脚本,然后从该脚本中恢复它们?

提前致谢。

@克雷格:当然克雷格这里有详细信息:

  • 我要恢复的机器:x86_64-redhat-linux-gnu 上的 PostgreSQL 8.4.8,由 GCC gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-48) 编译,64 位
  • 我进行原始备份的机器:x86_64-redhat-linux-gnu 上的 PostgreSQL 8.4.13,由 GCC gcc (GCC) 4.4.6 2 0120305 (Red Hat 4.4.6-4) 编译,64 位

导出命令:我正在使用 Adepmpiere Adempiere Wiki,它包含自己的 DBExport 和 DBRestore 脚本。
DBExport 脚本具有以下命令:

pg_dump -h 127.0.0.1 -p 5432 --no-owner -U adempiere adempiere > /home/adempiere/adempiere.sql

DBRestore 有以下几行:

psql -h 127.0.0.1 -p 5432 -d adempiere -U adempiere -f /home/adempiere/adempiere.sql

我能够在笔记本电脑上的虚拟机上恢复这个脚本,它恢复了 FK 包含的所有内容,但在测试机器上没有运气。

4

1 回答 1

3

好吧,这是我带来的解决方案

我只使用以下命令备份了结构 pg_dump -h 127.0.0.1 -p 5432 --no-owner -U -s adempiere adempiere > /home/adempiere/adempiere_bkp.sql

参数 -s 是这里的关键

要恢复只需在测试机器上执行以下命令

psql -h 127.0.0.1 -p -d adempiere -U adempiere -f /{ 文件路径 adempiere_bkp.sql }

瞧,一切又完成了!

希望它可以帮助别人。谢谢您的帮助。

于 2013-03-05T22:13:20.300 回答