【问题标题】:django python collation errordjango python排序错误
【发布时间】:2011-10-28 08:17:35
【问题描述】:

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

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

【问题讨论】:

    标签: python mysql django unicode mysql-error-1267


    【解决方案1】:

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

    ALTER TABLE foo CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
    

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

    CREATE DATABASE foo CHARACTER SET utf8 COLLATE utf8_general_ci;
    

    更多讨论here

    【讨论】:

    • 因此,您建议删除数据库,包括其所有表和可能的生产数据,以更改排序规则?将其改为 ALTER 语句怎么样?
    • 发誓,当我遇到这个问题时,所有文档都说我需要 DROP 和 CREATE。所以我研究了,你是对的。帖子已编辑。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-28
      • 2011-07-19
      • 2018-02-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多