VPS 移行を
過去の
前提
移行前、
移行前
OS の
Version CentOS 6.9
Django の
Version Django 1.10.8
Python の
Version python 2.7.6
移行後
OS の
Version CentOS Linux release 7.4.1708 (Core)
Django の
Version Django 1.10.8
Python の
Version Python 3.6.4
データ移行の 手順 (初回)
以下の
python2.7 manage.py dumpdata > dump.json
python3.6 manage.py flush
python3.6 manage.py loaddata dump.json
発生した トラブル
キー重複エラー1
全ての
django.db.utils.IntegrityError: Problem installing fixture '/xxxx/dump.json': Could not load contenttypes.ContentType(pk=1): duplicate key value violates unique constraint "django_content_type_app_label_76bd3d3b_uniq" DETAIL: Key (app_label, model)=(auth, permission) already exists.
Djangoを
- 修正後の
dumpdata python manage.py dumpdata --exclude auth.permission --exclude contenttypes > dump.json
RelatedObjectDoesNotExist
修正した dumpdata コマンドを
django.db.models.fields.related_descriptors.RelatedObjectDoesNotExist: Problem installing fixture 'xxxx/dump.json': Comment has no content_type.
showmigrations
で、原因は
- コメント関連の
データを 削除 Comment 関連のdelete from django_comment_flags; delete from generic_threadedcomment; delete from django_comments;
テーブルは 3テーブルあり、 3テーブルの データを 物理削除しました。
violates foreign key constraint “django_admin_content_type_id_c4bce8eb_fk_django_content_type_id”
Comment データ削除後、
return self.cursor.execute(sql) django.db.utils.IntegrityError: Problem installing fixtures: insert or update on table "django_admin_log" violates foreign key constraint "django_admin_content_type_id_c4bce8eb_fk_django_content_type_id" DETAIL: Key (content_type_id)=(43) is not present in table "django_content_type".
django_admin_log
は、django_content_type
と前述の
django_content_type
と、django_content_type
のpython2.7 manage.py dumpdata --exclude admin --exclude auth.permission --exclude contenttypes > dump.json
format を 変更して dumpdata を 試した
作業途中で、
format xml の
dumpdata コマンド python3 manage.py dumpdata --format=xml > django_dump.xml
エラー
CommandError: Unable to serialize database: BlogPost.description (pk:6) contains unserializable characters
以下のような
- スクリプト
import codecs from mezzanine.blog.models import BlogPost from django.core import serializers for blog_post in BlogPost.objects.all(): print("###################") print(blog_post) data = serializers.serialize("xml", BlogPost.objects.all()) print(data)
データ移行の 手順 (トラブル解消後 )
トラブル解消後の
1. 移行前環境で、
python2.7 manage.py dumpdata --exclude admin --exclude auth.permission --exclude contenttypes > dump.json
python3.6 manage.py flush
python3.6 manage.py loaddata dump.json
以上です。
コメント