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

时间:2013-05-10 01:08:08

标签: sql postgresql import phppgadmin

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

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

    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.但是我得到了同样的错误。

    知道会发生什么事吗?

    非常感谢。

1 个答案:

答案 0 :(得分:3)

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了解这些版本的不同之处。您可以通过阅读版本8.2.0,8.3.0和8.4.0的release notes了解更多信息。重要的是要了解每个版本中都存在应用程序可见行为更改;您必须测试您的应用程序,可能需要启用一些向后兼容性设置。

您还应阅读upgrading a PostgreSQL cluster文档,但请注意,pg_upgrade 无法使用升级版本低于8.4的版本。

如果您的安装不是过时了七年,那么这一切都会少得多痛苦。