2010-06-14 103 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

相關問題