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

问题:

在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选项会把原文件的权限也一起复制)
cp -p mysql.cnf mysql.cnf.bak #用vi打开配置文件mysqld.cnf并进行修改:
  1. 输入vi mysqld.cnf
  2. 找到 [mysqld],在 tmpdir =/tmp 后面按o键换行插入 character_set_server=utf8(如图所示):
    mysql错误提示: django.db.utils.InternalError: (1366,
  3. 按esc键 退出插入模式,按shift + : 进入命令行,输入wq保存并退出
  4. 输入 /etc/init.d/mysql restart 重启mysql服务
  5. 输入exit 退出超级用户模式

这样,配置文件就修改成功了

最后,提一下有可能导致修改失败的两个问题

1.如果在修改配置文件的过程中改错了配置,可以进入配置文件所在路径,删除已经保存修改的原配置文件 mysqld.cnf,输入mv mysqld.cnf.bak mysqld.cnf ,把备份的配置文件重命名为配置文件就可以还原,然后再执行上述步骤进行正确的修改即可。

2.如果因为权限问题没有修改成功,则可以输入chmod更改文件权限再进行修改。

你可能感兴趣的:(mysql错误提示: django.db.utils.InternalError: (1366, "Incorrect string value"...)解决方案)