Django 系統語系衝突

剛剛在Django 的 admin app裡面增加一些資料的時候出現了這個錯誤訊息:

Incorrect string value: '\xE6\xB2\x92\xE6\x9C\x89...' for column 'change_message' at row 1

去Google查了一下,應該是和mysql的預設語系有關係。

進mysql查一下就可以知道:


mysql> status   
--------------
mysql  Ver 14.12 Distrib 5.0.51a, for debian-linux-gnu (x86_64) using readline 5.2
Connection id: 159
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.0.51a-24+lenny5 (Debian)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: latin1
Db     characterset: latin1
Client characterset: latin1
Conn.  characterset: latin1
UNIX socket: /var/run/mysqld/mysqld.sock
Uptime: 4 hours 57 sec
Threads: 1  Questions: 1262  Slow queries: 0  Opens: 165  Flush tables: 1  Open tables: 38  Queries per second avg: 0.087
--------------



可以看出來上面的一堆characterset都是用latin 1 語系,而我的django應該是用unicode的語系吧。

網路上有很多解決方式,不過目前我看到最簡單的就是:
===================================================


邪楊.樹雄 提到...






或者可以在 create database 時加入 default character set utf8 的語句
像這樣︰

CREATE DATABASE DJANGO_SOME_PROJECT DEFAULT CHARACTER SET UTF8;
==================================================
所以我就把之前的database給 drop掉了重新設一個:
mysql>drop database testDataBase;
mysql>create database testDataBase default character set utf8;
然後重新 python manage.py syncdb
再設一次使用者名稱、密碼、email就好了。

留言

熱門文章