2010-06-14 56 views
34

我需要将我的数据库从sqlite迁移到mysql,并且各种工具/脚本对我来说太多了,无法轻松找到最安全,最优雅的解决方案。将Django DB从SQLite迁移到MySQL的最佳方式是什么?

这似乎我好http://djangosnippets.org/snippets/14/,但似乎为3年以来越来越这是令人担忧的更新..

你可以推荐被称为是可靠的使用Django 1.1.1的解决方案?

+3

我猜你已经尝试过'dumpdata'后跟'loaddata'? – 2010-06-14 04:34:01

回答

60

执行:

python manage.py dumpdata > datadump.json 

接下来,你的settings.py更改为MySQL数据库。

最后:

python manage.py loaddata datadump.json 
+3

除非有时这不起作用,如果你已经把unicode数据放入sql中的字符串中,fixture的创建者和mysql似乎就不会相处。至少,这就是我在这里想要解决的问题。 – freyley 2011-12-23 22:34:11

+2

或者由于完整性错误或其他许多问题,这不起作用。 – Marcin 2012-04-10 07:43:10

+1

有时它引发“...不是JSON可序列化” – 2014-01-20 04:39:26

23

经过一番艰苦搜索我,我希望未来的答案找人会发现有用的几个问题。

我的公式是

  1. python manage.py dumpdata > datadump.json
  2. 更改settings.py你的MySQL
  3. 确保你可以在你的MySQL连接(权限等)
  4. python manage.py migrate --run-syncdb
  5. 排除contentype带此片段的数据

    from django.contrib.contenttypes.models import ContentType ContentType.objects.all().delete() quit()

  6. python manage.py loaddata datadump.json

希望这将帮助你!

+0

这对我很有用。感谢堆 – mark 2017-03-03 21:11:34

+0

contenttype数据排除有什么作用? – DeltaG 2017-05-19 18:19:41

+1

@DeltaG 规范的答案是[this](https://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/)。但我发现的最佳答案是: [this one](https://stackoverflow.com/questions/20895429/how-exactly-do-django-content-types-work) – 2017-05-23 03:13:30

相关问题