sql - 尝试从两个 PostgreSQL 数据库导入数据库时​​出现语法错误

标签 sql postgresql import phppgadmin

我正在尝试使用 phpPgAdmin 从一台服务器导出数据库并将其放在另一台服务器上。我的流程是这样的:

  1. 选择服务器 1 中的数据库并点击导出按钮
  2. 选择“数据和结构”并在“复制”下拉列表中选择选项
  3. 下载
  4. 在服务器 2 中创建一个与服务器 1 中的数据库同名的数据库
  5. 选择该数据库,打开 SQL Pane ,然后粘贴我从服务器 1 下载的 SQL 代码
  6. 执行

那是我得到错误的时候:

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/

相关文章:

java - keytool错误命令

sql - TSQL-无法解析 XML(命名空间)

java - 我想将 sql 列与 java 中的 d1 变量进行比较

sql - 使用Haskell的postgres-simple库执行多行插入时如何修复 "operator does not exist: text = uuid"?

postgresql - sails -postgresql AdapterError : Unexpected error from database adapter: there is no parameter $1

java - 类路径中带有属性文件的外部库的导入未解决

php - 无法选择 != null 的字段

sql - 在 SQL Server 中使用外键是否会对性能造成严重影响?

postgresql - 在 docker-compose 网络中访问 postgres 数据

java - 导入类时的奇怪行为