MySQL問題記錄--python插入中文至MySQL提示SQLErroor:1366錯誤

Pyerlife發表於2016-11-16

一、在爬蟲指令碼做以下操作仍提示錯誤:SQL Error: 1366: Incorrect string value: "\xd0\xc2\xce\xc5…" for column "mian_title" at row 1

  1、在檔案頭新增

  #coding:utf8

  2、新增:

  import sys
  reload(sys)
  sys.setdefaultencoding('utf-8')

  

二、解決方法

  1、檢查資料庫此欄位的字符集與整理字符集是否與SQL語句傳遞資料的字符集相同;不相同則會引發MySQL1366錯誤。

mysql> show full columns from main_news;  #顯示資料表所有欄位使用的狀態(包括使用的字符集)。這裡我的資料表名是main_news
  

   可以看出,main_title欄位的Collation項非utf8,進行修改。

  2、修改

mysql> alter table main_news change main_title main_title varchar(900) character set utf8 collate utf8_unicode_ci not null default '';

  在使用命令檢視修改已成功完成。

 

附:上面的方法是從單個欄位修改,下面介紹表,資料庫的修改

修改資料庫字符集:

ALTER DATABASE db_name DEFAULT CHARACTER SET character_name [COLLATE ...];

把表預設的字符集和所有字元列(CHAR,VARCHAR,TEXT)改為新的字符集:

ALTER TABLE tbl_name CONVERT TO CHARACTER SET character_name [COLLATE ...]
如:ALTER TABLE logtest CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

只是修改表的預設字符集:

ALTER TABLE tbl_name DEFAULT CHARACTER SET character_name [COLLATE...];
如:ALTER TABLE logtest DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

 

參考連結:http://fatkun.com/2011/05/mysql-alter-charset.html

 

  至此,爬蟲指令碼成功將中文資料寫入至資料庫。

相關文章