mysql數據庫使用insert語句插入中文數據報錯

在mysql的命令行模式中,經過insert語句插入中文數據的時候報錯,相似於下面這樣:mysql

Incorrect string value: '\xE7\x8F' for column 'name' at row 1

形成這個錯誤一般是因爲建立數據表的時候使用了不正確的編碼格式,可使用以下命令查看操做的目標數據表的編碼格式。sql

SHOW CREATE TABLE 表名;

經過結果就能夠看到目標表的目標字段對應的編碼格式,咱們只須要把該列的編碼格式轉化爲utf8便可。數據庫

ALTER TABLE 表名 MODIFY 列名 數據類型 CHARACTER SET utf8 非空約束

例如:ALTER TABLE student MODIFY name VARCHAR(20) CHARACTER SET utf8 NOT NULL

固然這只是一個臨時的解決辦法,更近一步的解決辦法是修改數據表的編碼,防止之後在使用命令添加數據列的時候,使用的還是數據表的編碼。vim

ALTER TABLE 表名 DEFAULT CHARSET utf8;

而後這還不是最終的解決辦法,咱們還能夠經過修改數據庫的編碼方式來影響新建立的數據表的編碼方式,進而影響數據列的編碼方式。編碼

ALTER DATABASE 數據庫名 DEFAULT CHARACTER SET utf8;

可是這須要咱們每次在建立數據庫的時候都必須指定編碼方式,要想一勞永逸,咱們能夠直接去修改mysql的配置文件,使用以下命令:命令行

vim /etc/mysql/mysql.cnf.d/mysqld.cnf

添加以下配置rest

[mysqld]
character-set-server=utf8

保存以後從新啓動mysql服務便可,命令以下(以Ubuntu16.04爲例):code

systemctl restart mysql.service

注意在設置編碼格式的時候,使用以下命令查看支持的編碼格式:server

SHOW VARIABLES LIKE 'char%';

相關文章
相關標籤/搜索