方法: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
【問題報(bào)錯】
在數(shù)據(jù)庫插入數(shù)據(jù)時,varchar 類型的字段插入中文數(shù)據(jù)時報(bào)錯。
報(bào)錯原文:
ERROR 1366 (HY000): Incorrect string value: ‘xE8xA5xBFxE5xAEx89’ for column ‘a(chǎn)ddress’
【原因分析】
通過 show full columns from user_bean;
語句查看字段的collation屬性,發(fā)現(xiàn)字段的collation屬性值是 latin1_swedish_ci ,說明字段默認(rèn)為英語。未對漢語進(jìn)行設(shè)置,所以當(dāng)輸入漢語時,mysql會報(bào)錯為“字符串的值不正確”。
【解決方法】
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ù)庫插入含中文的數(shù)據(jù),成功!
注意:上面步驟可以解決以后創(chuàng)建表時字段的collation屬性的問題,但前面已經(jīng)創(chuàng)建的表字段的collation屬性值并不會發(fā)生變化。
如果要改變之前已經(jīng)創(chuàng)建好的表,怎么辦?
方法1:對原來的表進(jìn)行修改,可以通過類似語句alter table user_bean change address address varchar(255) character set utf8 collate utf8_general_ci not null;
方法2:刪除原來的表,重新再建。
【命令總結(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ù)類型 character set utf8 collate utf8_general_ci 約束條件;
推薦學(xué)習(xí):mysql視頻教程