我正在尝试使用 phpPgAdmin 从一台服务器导出数据库并将其放在另一台服务器上。我的流程是这样的:
- 选择服务器 1 中的数据库并点击导出按钮
- 选择“数据和结构”并在“复制”下拉列表中选择选项
- 下载
- 在服务器 2 中创建一个与服务器 1 中的数据库同名的数据库
- 选择该数据库,打开 SQL Pane ,然后粘贴我从服务器 1 下载的 SQL 代码
- 执行
那是我得到错误的时候:
ERROR: syntax error at or near "OWNED"
LINE 73: ALTER SEQUENCE address_customer_id_seq OWNED BY address.cust...
第 73 行的全部内容是:
ALTER SEQUENCE address_customer_id_seq OWNED BY address.customer_id;
我读过 here这可能是因为我的两台服务器上的 postgre 版本略有不同。所以我咨询了服务器技术人员,他说,是的,有那个问题。所以他升级了服务器 2。但是我遇到了同样的错误。
知道会发生什么吗?
非常感谢。
最佳答案
PostgreSQL 8.4 不会生成恢复到 8.1 的转储,因为它将使用 8.1 中不存在的功能和语法。
您可能可以通过针对 8.4 数据库运行 8.1 的 pg_dump
来降级,但转储很可能会简单地失败。
降级到如此程度将是一个挑战,可能需要手动编辑由 8.4 的 pg_dump
生成的转储以使其与 8.1 兼容。
8.1 是古老且不受支持的;它的最终生命周期终止版本是在 2010 年 11 月。您甚至不应该考虑将它用于任何新项目或工具,并且确实需要计划升级。
参见 the PostgreSQL version policy这些版本有多么不同。您可以通过阅读 release notes 了解更多信息对于版本 8.2.0、8.3.0 和 8.4.0。重要的是要了解应用程序可见的行为变化出现在每个版本中;您必须测试您的应用程序,并且可能需要启用一些向后兼容性设置。
您还应该阅读 upgrading a PostgreSQL cluster文档 — 但请注意 pg_upgrade
不能用于 升级早于 8.4 的版本。
如果您的安装没有过时 7 年,这一切都不会那么痛苦。
关于sql - 尝试从两个 PostgreSQL 数据库导入数据库时出现语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16473630/