方法:1、設(shè)置“my.cnf”文件,在mysqld下面添加“character_set_server=修改后的內(nèi)容”和“collation_server=修改后的內(nèi)容”;2、利用“systemctl restart mysqld”重啟即可。
本教程操作環(huán)境:windows10系統(tǒng)、mysql8.0.22版本、Dell G3電腦。
mysql中怎么修改collation
【問(wèn)題報(bào)錯(cuò)】
在數(shù)據(jù)庫(kù)插入數(shù)據(jù)時(shí),varchar 類(lèi)型的字段插入中文數(shù)據(jù)時(shí)報(bào)錯(cuò)。
報(bào)錯(cuò)原文:
ERROR 1366 (HY000): Incorrect string value: ‘xE8xA5xBFxE5xAEx89’ for column ‘a(chǎn)ddress’
【原因分析】
通過(guò) show full columns from user_bean;
語(yǔ)句查看字段的collation屬性,發(fā)現(xiàn)字段的collation屬性值是 latin1_swedish_ci ,說(shuō)明字段默認(rèn)為英語(yǔ)。未對(duì)漢語(yǔ)進(jìn)行設(shè)置,所以當(dāng)輸入漢語(yǔ)時(shí),mysql會(huì)報(bào)錯(cuò)為“字符串的值不正確”。
【解決方法】
1、編輯mysql的配置文件 /etc/my.cnf,vi /etc/my.cnf
在 [mysqld] 下面加入兩行補(bǔ)充
character_set_server=utf8 collation_server=utf8_general_ci
2、重啟Mysql服務(wù) systemctl restart mysqld
向數(shù)據(jù)庫(kù)插入含中文的數(shù)據(jù),成功!
注意:上面步驟可以解決以后創(chuàng)建表時(shí)字段的collation屬性的問(wèn)題,但前面已經(jīng)創(chuàng)建的表字段的collation屬性值并不會(huì)發(fā)生變化。
如果要改變之前已經(jīng)創(chuàng)建好的表,怎么辦?
方法1:對(duì)原來(lái)的表進(jìn)行修改,可以通過(guò)類(lèi)似語(yǔ)句alter table user_bean change address address varchar(255) character set utf8 collate utf8_general_ci not null;
方法2:刪除原來(lái)的表,重新再建。
【命令總結(jié)】
show full columns from 表名 vi /etc/my.cnf character_set_server=utf8 collation_server=utf8_general_ci systemctl restart mysqld alter table 表名 change 要修改的字段 字段名 數(shù)據(jù)類(lèi)型 character set utf8 collate utf8_general_ci 約束條件;
推薦學(xué)習(xí):mysql視頻教程