导入数据前后我都进行了设置 希望能保证中文信息顺利填入sql表

  • insert数据前 在workbench中查看或修改
  • insert数据后 出现Error1366的两种尝试
  • 最终解决问题的直接方法


mysql 插入中文错误 mysql导入中文出错_mysql



  1. 已经在mysql中建能想到需要的表几张,手动建
    每张表都在建立时手动设置、输入初始化了列,和每列的数据格式


mysql 插入中文错误 mysql导入中文出错_数据库_02



  1. 在导入数据前,设置可能出现的中文乱码问题,但对我来说可能好像 都没用
    如何处理乱码问题处理乱码问题参考2
  2. 小白(我的)问题 如何在macOS的终端下使用mysql
    终端mysql指令
mysql -uroot -p123

mysql -uroot -p密码
123为我的密码 0.0

这下可以查看设置中文乱码的链接来提前进行防止中文乱码的设置了。

show create database test;
ALTER DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

查看数据库的编码格式:

mysql 插入中文错误 mysql导入中文出错_数据_03

修改编码,改编码后查看数据库编码

mysql 插入中文错误 mysql导入中文出错_数据_04

可以像上文中在终端中修改,或者

insert数据前 在workbench中查看或修改

mysql workbench 中 点击靠右图标

mysql 插入中文错误 mysql导入中文出错_mysql 插入中文错误_05


mysql中显示设置已改变为utf-8

mysql 插入中文错误 mysql导入中文出错_数据_06

  1. 初始化学生成绩

终端使用mysql-建表并初始化数据

在终端中显示出所使用数据库studentgrade的表

mysql 插入中文错误 mysql导入中文出错_mysql 插入中文错误_07

insert数据后 出现Error1366的两种尝试

  1. 以上所有的设置完成后,但当我在workbench中输入insert语句时,仍然出现错误1366,是有关字符编码的问题


mysql 插入中文错误 mysql导入中文出错_mysql 插入中文错误_08


于是重新进入终端,发现设置仍不完善,其中server的参数存在问题
SHOW VARIABLES LIKE 'character%';


mysql 插入中文错误 mysql导入中文出错_数据_09


character_set_server 的value并非utf-8,修改server以及database的参数

set character_set_database=utf8;
set character_set_server=utf8;
SHOW VARIABLES LIKE 'character%';

mysql 插入中文错误 mysql导入中文出错_数据库_10


也可以尝试修改mysql中的my.ini文件,没找到在mac下此文件的修改方式…

  1. 插入中文数据尝试仍然失败,于是修改表的编码方式
ALTER TABLE `StudentGrade`.`grade_15` CHARACTER SET = utf8;

修改具体表为utf-8

mysql 插入中文错误 mysql导入中文出错_mysql_11

最终解决问题的直接方法

  1. 最终方法:但以上方法插入中文数据尝试继续失败,于是修改列的编码
    查看得,果然是列的编码方式在以上各种修改后仍顽强的为latin1,终于找到了问题的原因


mysql 插入中文错误 mysql导入中文出错_数据库_12

具体修改步骤:

  1. use StudentGrade; 设置要修改的默认数据库
  2. show full columns from grade_15; 查看是否为列的问题,查看结果为上面最后一张图

ALTER TABLE tablename CHANGE COLUMN `column_name` `column_name` CHAR(6) CHARACTER SET 'utf8' NOT NULL ;

使用ALTER TABLE tablename
CHANGE COLUMN column_name column_name CHAR(6) CHARACTER SET ‘utf8’ NOT NULL ;
指令修改列的参数为utf-8

  1. show full columns from grade_15; 完成后查看是否修改成功

上述方法的参考文章

在这一种方法试过之后,error1366终于消失啦