關于Mysql插入中文字符報錯ERROR 1366(HY000)的解決方法
問題
- 加載含有中文字符的數(shù)據(jù)到表中出錯
mysql> CREATE TABLE food( -> id INT(10) PRIMARY KEY AUTO_INCREMENT NOT NULL, -> NAME VARCHAR(20) NOT NULL, -> company VARCHAR(30) NOT NULL, -> price FLOAT, -> produce_time YEAR, -> validity_time INT(4), -> address VARCHAR(50) -> ); Query OK, 0 rows affected (0.07 sec)
mysql> INSERT INTO food(id,NAME,company,price,produce_time,validity_time,address) VALUES(4,'FF咖啡','FF咖啡廠',20,2002,5,'天津'); ERROR 1366 (HY000): Incorrect string value: '\xE5\x92\x96\xE5\x95\xA1' for column 'NAME' at row 1
原因
- mysql默認編碼latin1是不支持中文字符的,所以報錯。
解決
- 通過設置編碼字符為utf8,從而支持中文字符。
1、查看當前庫默認編碼格式
mysql> show variables like '%char%'; +--------------------------------------+----------------------------+ | Variable_name | Value | +--------------------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | | validate_password_special_char_count | 1 | +--------------------------------------+----------------------------+ 9 rows in set (0.00 sec)
2、將character_set_database和character_set_server設置為utf8
mysql> set character_set_database=utf8; Query OK, 0 rows affected, 1 warning (0.02 sec) mysql> set character_set_server=utf8; Query OK, 0 rows affected (0.00 sec)
3、刪除數(shù)據(jù)庫并新建數(shù)據(jù)庫,并切到該數(shù)據(jù)庫下
- 因為只有在編碼格式改變以后,再建庫才會生效。
drop database student; create database student; use student;
驗證
建表、添加數(shù)據(jù)
mysql> create table Student( -> Sno int not null auto_increment primary key, -> Sname varchar(10) not null, -> Sex char(1) not null, -> Sage tinyint(100) not null, -> Sdept char(4) not null)comment = '學生表'; Query OK, 0 rows affected (0.03 sec)
mysql> insert into Student values ( 1,'李勇', '男', 20, 'CS'); Query OK, 1 row affected (0.02 sec)
ok,成功解決
總結
如果某表中需要添加中文字符時需要在其庫之前將character_set_database和character_set_server
設置為utf8
set character_set_database=utf8; set character_set_server=utf8;
然后再建庫,建表插入中文字符數(shù)據(jù)
到此這篇關于關于Mysql插入中文字符報錯ERROR 1366(HY000)的解決方法的文章就介紹到這了,更多相關Mysql中文字符報錯ERROR1366內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Linux下安裝Mysql多實例作為數(shù)據(jù)備份服務器實現(xiàn)多主到一從多實例的備份
由于第一次接觸LINUX,花了三天時間才算有所成就,發(fā)出來希望可以給大伙帶來方便2010-07-07insert into … on duplicate key update / replace into 多行數(shù)據(jù)介紹
當我插入一條數(shù)據(jù)時,我要判斷(k1,k2)是否已經(jīng)存在(1條selete),若存在就update,不存在就insert2013-08-08MySQL啟動報錯提示發(fā)生系統(tǒng)錯誤5,拒絕訪問的原因和解決方法
使用命令net start mysql啟動數(shù)據(jù)庫服務時候,出現(xiàn)如下錯誤提示發(fā)生系統(tǒng)錯誤5,拒絕訪問,所以本文給大家介紹了MySQL啟動報錯提示發(fā)生系統(tǒng)錯誤5,拒絕訪問的原因和解決方法,需要的朋友可以參考下2024-01-01MySQL性能優(yōu)化配置參數(shù)之thread_cache和table_cache詳解
這篇文章主要介紹了MySQL性能優(yōu)化配置參數(shù)之thread_cache和table_cache詳解,THREAD_CACHE是Mysql的連接池,table_cache指定表高速緩存的大小,需要的朋友可以參考下2014-07-07