在mysql的命令行模式中,通過insert語句插入中文數據的時候報錯,類似於下麵這樣: 造成這個錯誤通常是由於創建數據表的時候使用了不正確的編碼格式,可以使用如下命令查看操作的目標數據表的編碼格式。 通過結果就可以看到目標表的目標欄位對應的編碼格式,我們只需要把該列的編碼格式轉化為 即可。 當然這 ...
在mysql的命令行模式中,通過insert語句插入中文數據的時候報錯,類似於下麵這樣:
Incorrect string value: '\xE7\x8F' for column 'name' at row 1
造成這個錯誤通常是由於創建數據表的時候使用了不正確的編碼格式,可以使用如下命令查看操作的目標數據表的編碼格式。
SHOW CREATE TABLE 表名;
通過結果就可以看到目標表的目標欄位對應的編碼格式,我們只需要把該列的編碼格式轉化為utf8
即可。
ALTER TABLE 表名 MODIFY 列名 數據類型 CHARACTER SET utf8 非空約束
例如:ALTER TABLE student MODIFY name VARCHAR(20) CHARACTER SET utf8 NOT NULL
當然這隻是一個臨時的解決辦法,更近一步的解決辦法是修改數據表的編碼,防止以後在使用命令添加數據列的時候,使用的仍是數據表的編碼。
ALTER TABLE 表名 DEFAULT CHARSET utf8;
然後這還不是最終的解決辦法,我們還可以通過修改資料庫的編碼方式來影響新創建的數據表的編碼方式,進而影響數據列的編碼方式。
ALTER DATABASE 資料庫名 DEFAULT CHARACTER SET utf8;
但是這需要我們每次在創建資料庫的時候都必須指定編碼方式,要想一勞永逸,我們可以直接去修改mysql的配置文件,使用如下命令:
vim /etc/mysql/mysql.cnf.d/mysqld.cnf
添加如下配置
[mysqld]
character-set-server=utf8
保存之後重新啟動mysql服務即可,命令如下(以Ubuntu16.04為例):
systemctl restart mysql.service
註意在設置編碼格式的時候,使用如下命令查看支持的編碼格式:
SHOW VARIABLES LIKE 'char%';