方法:1、設定「my.cnf」文件,在mysqld下面加入「character_set_server=修改後的內容」和「collation_server=修改後的內容」;2、利用「systemctl restart mysqld」重啟即可。
本教學操作環境:windows10系統、mysql8.0.22版本、Dell G3電腦。
【問題報錯】
在資料庫插入資料時,varchar 類型的欄位插入中文資料時報錯誤。
報錯原文:
ERROR 1366 (HY000): Incorrect string value: '\xE8\xA5\xBF\xE5\xAE\x89' for column 'address'
【原因分析】
透過show full columns from user_bean;
語句查看欄位的collation屬性,發現欄位的collation屬性值是latin1_swedish_ci ,說明欄位預設為英文。未對漢語進行設置,所以當輸入漢語時,mysql會報錯為「字串的值不正確」。
【解決方法】
1、編輯mysql的設定檔/etc/my.cnf,vi /etc/my .cnf
在[mysqld] 下面加入兩行補充
character_set_server=utf8 collation_server=utf8_general_ci
2、重啟Mysql服務systemctl restart mysqld
#向資料庫插入含中文的數據,成功!
注意:上面步驟可以解決以後建立表格時欄位的collation屬性的問題,但前面已經建立的表格欄位的collation屬性值不會改變。
如果要改變先前已經建立好的表,怎麼辦?
方法1:對原來的表格進行修改,可以透過類似語句alter table user_bean change address address varchar(255) character set utf8 collate utf8_general_ci not null;
方法2:刪除原來的表,重新再建。
【指令總結】
show full columns from 表名 vi /etc/my.cnf character_set_server=utf8 collation_server=utf8_general_ci systemctl restart mysqld alter table 表名 change 要修改的字段 字段名 数据类型 character set utf8 collate utf8_general_ci 约束条件;
推薦學習:mysql影片教學
#以上是mysql中怎麼修改collation的詳細內容。更多資訊請關注PHP中文網其他相關文章!