Den*_*1.5 4 mysql django postgresql database-migration django-south
我使用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
Run Code Online (Sandbox Code Playgroud)
我想知道是否将我的数据库从MySql迁移到PostgreSQL可能会阻止此错误.其次,从MySql迁移到PostgreSQL会更多地涉及到在MySql dbase上执行dumpdata,将设置更改为指向PostgreSQL和新后端的loaddata?
我看到了这个 stackoverflow问题,但它谈到他的数据库太大了.我不认为我的数据库会出现这种情况.我的Django项目中没有任何自定义SQL命令.
我厌倦了使用South看到这个错误,是的,切换到PostgreSQL已经放弃了它!
使用Ruby编写的mysql2postgres应用程序在上面的评论中提出对我不起作用(它会运行,输出一些细节到屏幕但不复制任何数据行,对我来说).不知道为什么.但很高兴有一个Python的重写,它完美无缺(最终对我来说):http:
//pypi.python.org/pypi/py-mysql2pgsql
我发现的唯一问题是:
最初我认为通过syncdb在PostgreSQL数据库中设置表是最安全的,然后只迁移数据.我试过这个,但表按字母顺序迁移,这违反了某些表的外键约束(行与尚未导入的表中的行相关).
我接下来尝试了结构+数据迁移.迁移得很好,但之后我在Django中遇到了一些问题,特别是管理站点.似乎迁移脚本已经从Django创建了一些不同的表约束.
我通过破解mysql2pgsql脚本来解决这个问题,以遵守yaml配置only_tables属性中给出的表的顺序......然后执行syncdb +仅数据迁移.通过反复试验,我对我的迁移表的排序进行了调整,直到它们都成功导入.
更新:
我上面提到的hack拉取请求已被接受,所以你现在可以从主版本执行此操作:https:
//github.com/philipsoutham/py-mysql2pgsql
| 归档时间: |
|
| 查看次数: |
2265 次 |
| 最近记录: |