mysql错误提示: django.db.utils.InternalError: (1366, "Incorrect string value"...)解决方案

在Django项目执行migrate时遇到1366类型的InternalError,原因是数据库缺少中文字符集支持。解决方法包括:一、创建或修改数据库时设定charset=utf8;二、创建或修改表时指定字符集为utf8;三、修改MySQL配置文件mysqld.cnf,设置character_set_server=utf8,并重启服务。注意修改配置文件时的备份和权限问题。
摘要由CSDN通过智能技术生成

问题:

在Django项目中使用 migrate 同步数据库操作时,出现1366类型 InternalError

出错原因:

由于表记录中有汉字,而创建库或者创建表的时候没有设置中文字符集charset=utf8

解决方案:

方案一、更改库的默认字符集

创建库的时候指定默认字符集:

create database 库名 default charset=utf8;

或者修改现有库的字符集:

alter database 库名 character set utf8;

方案二、更改表的默认字符集,

创建表的时候指定默认字符集

create table 表名 (...) default charset=utf8;

或者修改现有表的字符集

alter table 表名 character set utf8;

方案三、修改配置文件(新创建的库和表会自动设置中文字符集)

修改配置文件详细步骤: (注意:为了防止把配置文件改错,修改之前先将其备份)

# 获取用户权限:
sudo -i
# 进入到mysql配置文件所在路径:
cd /etc/mysql/mysql.conf.d/ 
# 备份(-p选项会把原文件的权限
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值