gpt4 book ai didi

MySQL 转储兼容不起作用

转载 作者:行者123 更新时间:2023-11-29 14:03:30 25 4
gpt4 key购买 nike

我做错了什么吗?该命令将不起作用。我正在尝试从 MySQL 迁移到 PostgreSQL。

mysql> mysqldump --compatible=postgresql dbname > /tmp/table.sql;

我一直收到错误。

错误 1064 (42000):您的 SQL 语法有误;检查与您的 MySQL 服务器版本对应的手册,了解在第 1 行的“mysqldump --compatible=postgresql dbname

我做错了什么?有没有更简单的方法来转换数据库?我已经阅读了大量的迁移文章,但这似乎是开始转换的更简单的方法。

最佳答案

Don 对当前问题的看法非常正确。不过,还有更多。

MySQL 的 mysqldump 兼容模式不会生成您可以直接简单地加载到其他数据库中的 DDL。没有通用和可移植的方式来表达像 AUTO_INCREMENT 这样的东西所以转储必须保留 MySQL 特定的特性,或者用没有自动递增行为的 int 类型替换它们。无论哪种方式,您都必须编辑转储以替换旧的 AUTO_INCREMENT带有 SERIAL 的字段伪类型字段。

MySQL 和 PostgreSQL 之间的类型名称存在差异,您可能还需要更正这些差异。

一般而言,我建议您从 MySQL 进行两次转储。一个应该是仅模式转储,一个应该是仅数据转储,两者都是“兼容”格式。然后,您应该编辑模式转储以更正 MySQL 主义并将它们转换为 PostgreSQL 主义或(在可能的情况下)SQL 标准用法。使用 psql thedatabasename < schema-edited-for-pg.sql 修复模式并成功加载到 PostgreSQL 后您可以加载数据转储。

我还建议将数据转储包装在 BEGIN; 中和 END;语句所以它要么全部成功要么全部失败。如果您在转储过程中遇到错误并且必须去编辑转储以修复它,这将为您省去重复删除并重新创建数据库和模式的麻烦。

关于MySQL 转储兼容不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8301903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com