- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我做错了什么吗?该命令将不起作用。我正在尝试从 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/
我正在为我的应用程序使用 Tank-Auth。我唯一的问题是激活和重置帐户密码。 用于登录、注册、注销;我对这些代码没有问题; $route['login'] = "/auth/login"; $ro
我是一名优秀的程序员,十分优秀!