1. 程式人生 > 其它 >資料庫中插入中文的時候報錯ERROR 1366 (HY000): Incorrect string value: '\xE4\xB8\xAD\xE9\xAB\x98...' for column 'Cname' at row 1

資料庫中插入中文的時候報錯ERROR 1366 (HY000): Incorrect string value: '\xE4\xB8\xAD\xE9\xAB\x98...' for column 'Cname' at row 1

在我們插入資料中有中文的時候會報錯如下:

root@leadchina 07:43:32->INSERT INTO student VALUES(0001,'巨集志','',30,'計算機網路');
ERROR 1366 (HY000): Incorrect string value: '\xE5\xAE\x8F\xE5\xBF\x97' for column 'Sname' at row 1

這種問題是由於我們在建立table的時候預設的編碼格式是latin1,如下:

show create table SC;
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| SC | CREATE TABLE `SC` ( `SCid` int(12) NOT NULL AUTO_INCREMENT COMMENT '主鍵', `Cno` int(10) NOT NULL COMMENT '課程號', `Sno` int(10) NOT NULL COMMENT '學號', `Grade` tinyint(2) NOT NULL COMMENT '分數', PRIMARY KEY (`SCid`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 | +-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)

此時我們需要通過一下命令修改編碼格式

alter table SC  default character set utf8;

再去插入之前的中文還是一會提示同樣的錯誤

root@leadchina 07:48:47->show create table student;
+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table   | Create Table                                                                                                                                                                                                                                                                                                                                                                                                                                      |
+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| student | CREATE TABLE `student` (
  `Sno` int(10) NOT NULL COMMENT '學號',
  `Sname` char(16) CHARACTER SET latin1 NOT NULL COMMENT '學號',
  `Ssex` char(2) CHARACTER SET latin1 NOT NULL COMMENT '性別',
  `Sege` tinyint(2) NOT NULL DEFAULT '0' COMMENT '學生年齡',
  `Sdept` varchar(16) CHARACTER SET latin1 DEFAULT NULL COMMENT '學生性別',
  PRIMARY KEY (`Sno`),
  KEY `INDEX_NAME` (`Sname`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8               |
+---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

此時會發現雖然當前表的預設欄位已經修改為utf8,但是字串格式的