Django数据迁移流程(sqllite3 > mysql),及报错解决:UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xd1

一、迁移流程:

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
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值