Django 排序规则的非法混合 (latin1_swedish_ci,IMPLICIT) 和 (utf8_general_ci,COERCIBLE)

Django Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE)

提问人:supermario 提问时间:10/31/2013 最后编辑:supermario 更新时间:10/31/2013 访问量:7177

问:

我正在使用 Django 1.5.4 和 Django-Regsitration 模块。每当我尝试使用波斯语字体注册用户时,我都会收到以下错误:

DatabaseError at /accounts/register/
(1267, "Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'like'")
Request Method: POST
Request URL:    http://127.0.0.1:8000/accounts/register/
Django Version: 1.5.4
Exception Type: DatabaseError

我在创建的其他表单中也有类似的问题:每当我用波斯字体填充字段时,我都会收到以下错误:

Warning at /accounts/profile/
Incorrect string value: '\xDA\xA9\xD8\xA7\xD8\xB1...' for column 'occupation' at row 1

为了解决这个问题,我做了:

使用 PhpMyAdmin,我将数据库的排序规则更改为“utf8_general_ci

没有效果。

我还在数据库上强制执行了utf8:

mysql> ALTER DATABASE djangodb  charset=utf8;

还是没有效果。

所以感谢你的提示。

姜戈 UTF-8

评论

5赞 nickzam 10/31/2013
您还需要转换表格:stackoverflow.com/questions/1073295/...ALTER TABLE yourtable CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
0赞 supermario 10/31/2013
事实上,我需要转换所有表格。这个脚本完成了这项工作:stackoverflow.com/a/2150335/727695。请随时详细说明答案,我会接受的。谢谢
0赞 Andrey Shipilov 6/24/2019
首先,你需要停止使用 Django 的 1.X 分支。

答: 暂无答案