发现有人问character_set_database改不过来的问题,我说一下,问题本身简单,高手勿拍。mysql字符集是层层继承的,字段默认的话看表,表默认看库,库默认看服务器,服务器安装时候的默认是latin1
一般碰到想改character_set_database的人都马上想到去改一下my.ini,default-character-set=UTF8。改过重启发现别的都变了,唯独character_set_database没变。问题出在character_set_database说的其实是你当前use的库的字符集。拿sakila举例说明。默认安装mysql,字符集全都是latin1。resource sakila-schema.sql; resource sakila-data.sql,在创建sakila的sql里没有指定sakila库的字符集,于是用服务器的默认latin1。库创建好了后,你把my.ini里面改了utf8,但是这对于已经用latin1创建的sakila没有影响。那么你use sakila后,在show variables 看到的 charcater_set_database当然还是sakila本身的latin1。解决:改了my.ini 后(utf8),重新创建一下sakila,你在看吧~:)