mysql> insert into T_BRXX (BRBH,BRMC,DLKL,YCJE) values (1,"张纳","zhangna",100);
ERROR 1366 (HY000): Incorrect string value: '\xE5\xBC\xA0\xE7\xBA\xB3' for column 'BRMC' at row 1
也就是说插入中文有错误,那么考虑编码问题。
先输入命令show variables like "%char%";查看编码问题,结果如图:
上图的八个字段含义请参考手册:https://dev.mysql.com/doc/refman/8.0/en/charset-server.html
问题出现的原因:支持utf8,但是不支持四字节的utf8mb4,因此为了快速解决问题,只需要把相应字段编码改成utf8mb4即可,修改如下:
ALTER TABLE JavaExp.T_BRXX MODIFY COLUMN BRMC VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;
则结果为:
后续设置编码,参考MYSQL的手册
查看数据库编码:
SHOW CREATE DATABASE db_name;
修改数据库字符集:
ALTER DATABASE db_name DEFAULT CHARACTER SET character_name [COLLATE ...];
如: ALTER DATABASE db_name DEFAULT CHARACTER SET utf8mb4;
查看表编码:
SHOW CREATE TABLE tbl_name;
把表默认的字符集和所有字符列(CHAR,VARCHAR,TEXT)改为新的字符集:
ALTER TABLE tbl_name CONVERT TO CHARACTER SET character_name [COLLATE ...] 如:ALTER TABLE logtest 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;
查看字段编码:
SHOW FULL COLUMNS FROM tbl_name;
修改字段的字符集:
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;