2011-07-13 36 views
7

我想設置我的Django站點以安全的方式使用UTF-8 for MySQL,而不管MySQL安裝是否使用UTF-8作爲默認值。除了創建使用UTF-8編碼的表,我添加了以下到settings.py我的數據庫初始化,以確保連接也使用UTF-8:設置使用UTF-8的Django/MySQL站點

'OPTIONS': { 'init_command': 'SET storage_engine=INNODB; SET names "utf8"' } 

這將導致一個錯誤:

_mysql_exceptions.ProgrammingError: (2014, "Commands out of sync; you can't run this command now") 

什麼是正確的方法來做到這一點?是否有另一個需要執行SET NAMES的地方?

回答

10

你只需要使用SET只有一次,並追加其他的命令:

'SET storage_engine=INNODB,character_set_connection=utf8,collation_connection=utf8_unicode_ci' 
+0

鏈接不起作用 – nkvnkv

10

我所要做的就是把這個settings.py:在MySQL

'OPTIONS': { 'init_command': 'SET storage_engine=INNODB' } 

然後,我創建的數據庫我自己附:

CREATE DATABASE my_database CHARACTER SET utf8; 

其次是所有CREATE USERGRANT電話。

之後,./manage.py syncdb./manage.py migrate(因爲我用南)完成了一切。

到目前爲止它一直工作正常。無需更改任何MySQL配置文件。 (系統管理員想保持MySQL的使用latin1字符集默認情況下爲其他用戶。)

+0

適合我,改變它的數據庫創建。 –