在 Django 中从 SQLite 迁移到 MySQL 遇到了若干问题,记录在本文。
UnicodeDecodeError
UnicodeDecodeError:
'utf-8' codec can't decode byte 0xff in position 0:
invalid start byte
该错误是由于要导入的文件不是 UTF-8 编码导致的。Django 默认似乎会将数据库文件导出为 UTF-16 LE 格式,使用 VSCode 等工具转码成 UTF-8 即可。
IntegrityError
django.db.utils.IntegrityError:
Problem installing fixture 'backup.json':
Could not load contenttypes.ContentType(pk=9):
(1062, "Duplicate entry 'restapi-*' for key 'django_content_type_app_label_model_*_uniq'")
该错误似乎是由于权限数据库转储错误导致的。只需要在导入时,用下面的命令忽略这些表即可。
python manage.py loaddata --exclude auth.permission --exclude contenttypes backup.json
如果仍然看到类似错误,还可以再加几个排除对象:
--exclude auth.user
--exclude admin.logentry