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的語系吧。
網路上有很多解決方式,不過目前我看到最簡單的就是:
===================================================
邪楊.樹雄 提到...
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;
像這樣︰
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就好了。
留言
張貼留言