解决MySQL5.7的表无法插入中文的问题

环境及MySQL版本说明

  MySQL版本使用的是5.7,MySQL的环境是pull了一个docker镜像run起来的。

问题描述

  在创建好的数据库中新建一张表emp2:

  然后试图往这张表中的title字段写入中文数据时发生了错误!

  具体的SQL语句如下:

insert into emp2(num, title, url) values(1715046,'身高1米八','https://xxx.mp4'); 

  报错信息如下:

1366 - Incorrect string value: 'xE8xBAxABxE9xABx98...' for column 'title' at row 1, Time: 0.001000s

  很显然,title字段写入了一个 Incorrect格式的数据!

浅谈一下终端的保护措施

  如果读者把上面的SQL语句复制到终端去执行的话,终端会显示成这样:

  也就是说,终端会将非法的字符自动过滤掉,只留下“合法”的字符“1”——读者可以试试,如果将title字段插入的字符串都写成中文的话,将命令粘贴到终端后title最终会插入一个空字符串!

表级别的修改

  查看一下这张表的 full columns:

  可以看到,varchar类型的title与url的collation属性为latin~

  按照下面的方式修改一下:

  然后再执行下面带中文的语句就没问题了:

insert into emp2(num, title, url) values(1715046,'身高1米八','https://xxx.mp4'); 

数据库级别的修改

  上面的方案只是修改了表的属性,试想一下如果我们在这个数据库中创建多张表,每张表都要改一下有些麻烦。

  从网上查一下修改配置文件的方案即可。

原文地址:https://www.cnblogs.com/paulwhw/p/14872572.html