2011-08-16 9 views
5

次のエラーの原因は何ですか?django python照合エラー

if MyObject.objects.filter(location = aDictionary['address']): 
場所は次のように定義されて

::私はフィルタリングしようとすると、

location = models.CharField(max_length=100, blank=True, default='') 

私はのために(aDictionary [「アドレス」]は英数字以外の文字の文字列が含まれている場合、次のエラーを取得します例Kīhei):

File "/usr/lib/pymodules/python2.6/MySQLdb/connections.py", line 35, in defaul 
terrorhandler 
    raise errorclass, errorvalue 
_mysql_exceptions.OperationalError: (1267, "Illegal mix of collations (latin1_sw 
edish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='") 

答えて

6

アルターそうのようなMySQLでデータベース:

ALTER TABLE foo CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; 

新しいデータベースを作成する場合は、右を作成するために覚えて、設定を照合:

CREATE DATABASE foo CHARACTER SET utf8 COLLATE utf8_general_ci; 

もっと議論here

+0

照合順序を変更するために、すべてのテーブルとプロダクションデータを含むデータベースを削除することをお勧めしますか?その代わりにALTERステートメントに変更するのはどうですか? – Jordan

+0

私はこの問題に遭遇したときに、すべてのドキュメントでDROPとCREATEを行う必要があると言いました。だから私は研究した、あなたは正しい。投稿が編集されました。 –

+0

いいですね:) – Jordan

0

PythonはUnicode文字列を使用しており、データベースはありません。 utf8を使用するようにデータベースの照合順序を変更してください。

関連する問題