mysql insert报错_mysql数据库使用insert语句插入中文数据报错
在mysql的命令行模式中,通過insert語句插入中文數(shù)據(jù)的時(shí)候報(bào)錯(cuò),類似于下面這樣:
Incorrect string value: '\xE7\x8F' for column 'name' at row 1
造成這個(gè)錯(cuò)誤通常是由于創(chuàng)建數(shù)據(jù)表的時(shí)候使用了不正確的編碼格式,可以使用如下命令查看操作的目標(biāo)數(shù)據(jù)表的編碼格式。
SHOW CREATE TABLE 表名;
通過結(jié)果就可以看到目標(biāo)表的目標(biāo)字段對應(yīng)的編碼格式,我們只需要把該列的編碼格式轉(zhuǎn)化為utf8即可。
ALTER TABLE 表名 MODIFY 列名 數(shù)據(jù)類型 CHARACTER SET utf8 非空約束
例如:ALTER TABLE student MODIFY name VARCHAR(20) CHARACTER SET utf8 NOT NULL
當(dāng)然這只是一個(gè)臨時(shí)的解決辦法,更近一步的解決辦法是修改數(shù)據(jù)表的編碼,防止以后在使用命令添加數(shù)據(jù)列的時(shí)候,使用的仍是數(shù)據(jù)表的編碼。
ALTER TABLE 表名 DEFAULT CHARSET utf8;
然后這還不是最終的解決辦法,我們還可以通過修改數(shù)據(jù)庫的編碼方式來影響新創(chuàng)建的數(shù)據(jù)表的編碼方式,進(jìn)而影響數(shù)據(jù)列的編碼方式。
ALTER DATABASE 數(shù)據(jù)庫名 DEFAULT CHARACTER SET utf8;
但是這需要我們每次在創(chuàng)建數(shù)據(jù)庫的時(shí)候都必須指定編碼方式,要想一勞永逸,我們可以直接去修改mysql的配置文件,使用如下命令:
vim /etc/mysql/mysql.cnf.d/mysqld.cnf
添加如下配置
[mysqld]
character-set-server=utf8
保存之后重新啟動(dòng)mysql服務(wù)即可,命令如下(以Ubuntu16.04為例):
systemctl restart mysql.service
注意在設(shè)置編碼格式的時(shí)候,使用如下命令查看支持的編碼格式:
SHOW VARIABLES LIKE 'char%';
總結(jié)
以上是生活随笔為你收集整理的mysql insert报错_mysql数据库使用insert语句插入中文数据报错的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 6数组排序的方法_JavaScript数
- 下一篇: esd管 低cj要求_TVS管与ESD保