解决向表中添加中文数据报错的问题

Posted cxydnxs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决向表中添加中文数据报错的问题相关的知识,希望对你有一定的参考价值。

可能有人在往表中添加数据时会遇到这类报错

django.db.utils.InternalError: (1366, "Incorrect string value: ‘xE9x9A..................

 

以下是亲测比较有效的解决方案

mysql版本:5.6

网传向DATABASES中添加

技术图片

 

 实际上效果并不明显,当然我也在此之后删表重建过了。

然后就只能另辟蹊径了

技术图片

 

  在这里看出character_set_database默认编码方式是拉丁文而不是utf8

  所以接下来需要配置my.ini配置文件,这个配置文件默认路径应该是在c盘下的ProgramData文件夹下

  当然接下来的方法我是引用了一个大神的思路

  查看设置:show global variables like ‘character_set_server‘; 和 show global variables like ‘collation_server‘; 

  修改设置:  [mysqld] 

                   character_set_server=utf8 
                   collation_server=utf8_general_ci 
技术图片

 (后来我发现配置文件里的内容可加可不加,当然加了好像也没什么影响,只要是适合自己电脑的方法就是好方法)

 我这边陆续操作下来发现基本上都是服务器配置

 后面的操作应该基本上不要修改

 接下来我就直接保存了

 然后我是在命令行界面进入指定的数据库里更改该表的字符编码

 技术图片

技术图片

 

 技术图片

 

 技术图片

 

 技术图片

 

 

 

 

----------------------------------------------------------------------------------------------------------------------------------------------------

以下是一些引用的参考资料,供日后借鉴学习

 a)查看数据库的编码:show create database databaseName;
 b)修改数据库编码: alter database databaseName default character set utf8 collate utf8_general_ci;
 a)查看建表的编码:show create table tableName;

 

下面附上mysql的一些相关命令:

通过MySQL命令行修改:
  set character_set_client=utf8;
  set character_set_connection=utf8;
  set character_set_database=utf8;
  set character_set_results=utf8;
  set character_set_server=utf8;
  set character_set_system=utf8;
  set collation_connection=utf8;
  set collation_database=utf8;
  set collation_server=utf8;
修改数据库字符集:
     ALTER DATABASE db_name DEFAULT CHARACTER SET character_name [COLLATE ...];
     如:
     ALTER TABLE test CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
     修改表的默认字符集:
     ALTER TABLE tbl_name DEFAULT CHARACTER SET character_name [COLLATE...];
     如:ALTER TABLE logtest DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
     修改字段的字符集:
     ALTER TABLE tbl_name CHANGE c_name c_name CHARACTER SET character_name [COLLATE ...];
     如:ALTER TABLE logtest CHANGE title title VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci;

   原文链接:https://blog.csdn.net/oopsangle/article/details/24873419

 

以上是关于解决向表中添加中文数据报错的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何避免向表中添加时间戳字段? [关闭]

Netezza:如何向表中添加列

每次向表中添加数据时,我是不是应该删除并重新创建表上的索引?

向表中添加大量索引是不是有缺点?

从数据库 Django 向表中添加删除原始按钮

使用默认值向表中添加列