【发布时间】:2012-02-12 07:13:35
【问题描述】:
我使用 Django 1.2 和 1.3 以及 MySql 后端。
使用 South 迁移 MySql 数据库时偶尔会收到错误消息:
! Error found during real run of migration! Aborting.
! Since you have a database that does not support running
! schema-altering statements in transactions, we have had
! to leave it in an interim state between migrations.
...
! The South developers regret this has happened, and would
! like to gently persuade you to consider a slightly
! easier-to-deal-with DBMS
我想知道将我的数据库从 MySql 迁移到 PostgreSQL 是否可以防止此错误。其次,从 MySql 迁移到 PostgreSQL 是否会更多地涉及在 MySql 数据库上执行转储数据,将设置更改为指向 PostgreSQL 和新后端上的 loaddata?
我看到thisstackoverflow 问题,但它谈到他的数据库太大。我认为我的数据库不会出现这种情况。我的 Django 项目中没有任何自定义 SQL 命令。
【问题讨论】:
-
只需尝试答案stackoverflow.com/a/8385094/540341 中给出的mysql2postgres - 如果一切正常,则需要几分钟。您可以在迁移之前备份您的数据库和配置,以确保 100% 安全。
-
另一种选择是留在 MySQL 但更改表 InnoDB 引擎。见stackoverflow.com/questions/4834415/…
-
@filiprem,谢谢,这可能有效。我很感兴趣,但如果专门迁移到 postgreSQL 也会避免这种情况。我还有其他几个想要迁移的原因。我读到了 mysql2postgres,如果简单的 dumpdata/loaddata 出现问题,这将是一个很好的后备。
-
@filiprem InnoDB 支持 DDL 事务吗?
-
顺便说一句,stackoverflow.com/questions/4834415/… 并没有表明如果您使用 InnoDB,South 会停止抱怨。 South 在 InnoDB 上工作,但由于缺少事务功能,当您的迁移失败时它仍然会抱怨。
标签: mysql django postgresql database-migration django-south