django sqlite 3 mysqlへの移行

5951 ワード

最も簡単なSQLite MySQL移行
これもほとんどの検索結果に現れ、似ているか似ている方法です.まずdumpしてからload
 python ./manage.py dumpdata > data.json

次にデータをload
 python ./manage.py loaddata data.json

しかし、著者が言ったように、残念なことに、これは仕事をしません.
SQLite3 MySQL Migrate
1.settings.pyを編集し、slaveデータベースを追加し、
   DATABASES = {'default': {...}, 'slave': {...}}

修正後はおおむね次のようになります
DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.sqlite3",
        "NAME": "dev.db",
        "USER": "",
        "PASSWORD": "",
        "HOST": "",
        "PORT": "",
    },
    "slave": {
        "ENGINE": "django.db.backends.mysql",
        "NAME": "phodal",
        "USER": "root",
        "PASSWORD": "",
        "HOST": "",
        "PORT": "",
    },
}

思想的には主従同期である.
southを使用する場合は無効にします
2.データベースの作成
   CREATE DATABASE phodal CHARACTER SET utf8 COLLATE utf8_general_ci;

3.新しいデータベースにテーブルを作成する
    python ./manage.py syncdb --database slave

**south``を許可し、もう一度繰り返します.
    python ./manage.py syncdb --database slave

4.プロジェクトディレクトリにto_slave.pyを作成する
from django.contrib.contenttypes.models import ContentType

def run():

    def do(Table):
        if Table is not None:
            table_objects = Table.objects.all()
            for i in table_objects:
                i.save(using='slave')

    ContentType.objects.using('slave').all().delete()

    for i in ContentType.objects.all():
        do(i.model_class())
signalsのタイプがある場合は、まず無効にする必要があります.
5.同期
shellに入る
  python ./manage.py shell

python shellで実行
   from to_slave import run
   run()

6.slaveをデフォルトのデータベースに変更します.