解決mysql資料庫插入中文報錯問題
問題的原因:
建立資料庫和資料表的時候未設定編碼造成的。
現象:
向資料表的varchar型別列插入中文報錯
解決:
(1)修改資料庫和資料表的編碼格式為utf8 -- UTF-8 Unicode,排序規則為utf8_general_ci;
(2)做完這些還不夠,因為資料表的列的編碼格式仍然不是utf8,看下面:
檢視資料表的編碼格式:
show create table tb_name
顯示如下:
CREATE TABLE `tb_shi` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`sheng_id` int(11) NOT NULL,
`name` varchar(20) CHARACTER SET latin1
PRIMARY KEY (`id`),
KEY `sheng_id` (`sheng_id`),
CONSTRAINT `tb_shi_ibfk_1` FOREIGN KEY (`sheng_id`) REFERENCES `tb_sheng` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8
如上面name列標藍加下劃線的地方,列的編碼格式仍然為latin1,接下來:
(3)修改資料列的編碼格式:
alter table 表名 change 列名 列名 varchar(40) character set utf8