1. 程式人生 > >完美解決mysql儲存中文出現1366錯誤

完美解決mysql儲存中文出現1366錯誤

最近在使用sqlalchemy將中文存放至mysql資料庫的表中時出現:

Warning Code :1366 Incorrect string value: '\xE5\x9C\xA8' for column 'content' at row 1

這是因為我們存放的中文,而我們的表並不支援中文字符集,使用 show variables like 'character%'; 檢視mysql當前編碼:


可以看出database和server的字符集使用的是latin1,latin1是不支援中文的,導致存放中文錯誤。

我嘗試了兩種方法來避免中文存放錯誤問題:

1:設定server和database為utf8型別

使用以下命令來設定在命令列輸入:

    show variables like '%char%';
    set character_set_server=utf8;
    set character_set_database=utf8;

一般使用上面的命令就可以了,如果還不行,show create table 表名;,看看具體的column是不是字符集不對。

2:建表時設定預設字符集

我在建表時一般會在sql語句中設定預設字符集為utf8,來避免一些問題:

sql='''create table analysis(city varchar(20),companySize varchar(20),education varchar(20))default charset=utf8'''

在末尾新增default charset=utf8,來設定就好了,如果還需要設定其他的引數,也可以直接在sql語句的末尾新增。

★★★★★溫馨提示:

這是個人遇到的一個問題,這裡說一下:在使用sql語句時,有些單詞、字母是特殊字元類似於python中的class、import等,所以如果要使用這樣的關鍵字,需要給它加上``,例如`index`,這裡的index就屬於關鍵字,若是直接使用,則會報錯。所以需要特別注意,我在使用時老是出錯,就是找不到問題,還以為其他錯誤,還好突然想起了資料庫老師偶然提到的這個問題。