2020年6月29日月曜日

django-CMS SQLite3をMySQLに変更する

以下を参考に、Django(django-CMS)のSQLite3 DBデータを dump してやってみましたが、どうもエラーが発生してうまくいきません。

SQLite3のデータをdumpしてMySQLに移行する
https://qiita.com/nnsnodnb/items/9e99e7f0ca3f82bf2171%C2%A0%C2%A0


そこで、以下のようにjsonファイルでエクスポート/インポートしたらできました。

1.仮想環境に入ってから以下を実行する。
(venv)$ python manage.py dumpdata > datadump.json

2.MySQL内にDBをCREATEしておきます。
mysql > CREATE DATABASE dbname CHARACTER SET utf8mb4;

3.次にsettings.pyを編集してDBをMySQLに変更します。
  ※先にMySQL内にインポートするDBをCREATEしておくのを忘れないようにします。

4.Migrateします。
(venv)$ python manage.py migrate

※このままでloaddataをするといかのようなエラーが発生するので、手順4のようにContentTypeを削除します。
django.db.utils.ProgrammingError: Problem installing fixture '/xxx/myproject/datadump.json': Could not load contenttypes.ContentType(pk=1): (1146, "Table 'dbname .django_content_type' doesn't exist")

5.Pythonのシェルに入ります。
(venv)$ python manage.py shell

そして以下を実行します。
>>> from django.contrib.contenttypes.models import ContentType
>>> ContentType.objects.all().delete()
>>> quit()

6.データをインポートします。
(venv) $ python manage.py loaddata datadump.json


これでOKでした。

参考
What's the best way to migrate a Django DB from SQLite to MySQL?

0 件のコメント:

コメントを投稿