ошибка сортировки Python в Django - PullRequest
5 голосов
/ 16 августа 2011

В чем причина следующей ошибки? когда я пытаюсь отфильтровать с помощью:

if MyObject.objects.filter(location = aDictionary['address']):

где местоположение определяется как:

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

Я получаю следующую ошибку, когда aDictionary ['address'] содержит строку с не алфавитно-цифровым символом (например, 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 '='")

Ответы [ 2 ]

7 голосов
/ 16 августа 2011

Измените базу данных в MySQL следующим образом:

ALTER TABLE foo CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

При создании новой базы данных не забудьте создать с правильными настройками сортировки:

CREATE DATABASE foo CHARACTER SET utf8 COLLATE utf8_general_ci;

Подробнее здесь.

1 голос
/ 16 августа 2011

Python использует строки Unicode, а ваша база данных - нет. Измените параметры сортировки базы данных, чтобы использовать utf8, и все будет в порядке.

...