一、迁移流程:
1.在setting文件:数据库配置为sqlite3时(生成json格式数据),终端执行:
python manage.py dumpdata --exclude=contenttypes --exclude=auth.Permission > initial_data.json
2.更改setting配置为mysql(在mysql数据库生成空表,此时仅有表结构,表里还没有数据),终端执行:
python manage.py migrate
3.(将json文件导入已建好表的mysql,正确执行后mysql里将有数据),终端执行:
python manage.py loaddata initial_data.json
该命令的解释:https://blog.csdn.net/weixin_33127753/article/details/90717038
二、报错:
1.在执行上述流程第三步时,出现报错:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd1 in position 156: invalid continuation byte
2.报错原因分析:
如果json文件中包含中文字符,会导致此报错。
推测原因:sqlite数据库使用的是UTF-8编码方式,而生成的json文件的字符串是ASCII编码或Unicode编码,导致字符串格式错误。
3.解决方法:
记事本(或其他)打开这个json文件,另存为,在另存为的弹窗中选择编码为utf-8,然后重新执行流程3的命令(命令中的initial_data.json
,要对应上另存为的文件 的文件名):
三、补充:
直接执行下面这两行命令也可完成迁移:
python manage.py makemigrations
python manage.py migrate