2014年3月23日 星期日

Django mysql insert into 中文資料: incorrect string value

在django 中使用model 自動creat mysql 的table 並不能直接設定 table 的語系設定,

所以必須從 my.cnf中來決解這個問題。

修改mysql  的設定檔,加入以下的設定。
# vim /etc/mysql/my.cnf

[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8


正常來說,此時就可以正常insert data to mysql。

但是如果還是有問題的話,進入mysql consol界面check 一件事情。

# mysql -uroot -p

mysql > use yourdatabse;

mysql > show create table yourtable;

檢查這一行  
ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8

請create table時確定為utf8,如果不是utf8代表這table是在更改設定檔之前時,所create 出來的table。所以會一直無法寫入中文的data,因此再用django 的syncdb從新create table吧!

沒有留言:

張貼留言