5

以下错误的原因是什么?当我尝试过滤时:

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 '='")
4

2 回答 2

7

像这样更改 MySQL 中的数据库:

ALTER TABLE foo CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

创建新数据库时,请记住使用正确的整理设置进行创建:

CREATE DATABASE foo CHARACTER SET utf8 COLLATE utf8_general_ci;

更多讨论在这里

于 2011-08-16T18:56:44.370 回答
1

Python 使用的是 Unicode 字符串,而您的数据库不是。更改您的数据库排序规则以使用 utf8,您应该没问题。

于 2011-08-16T18:53:41.123 回答