Made By ZLY All Right Reversed
1.问题展示
django django.db.utils.InternalError: (1271, “Illegal mix of collations for operation ‘like’”)
2.解决方案
django 在使用admin搜索功能时,输入中文提示错误,因为search_fields包含了date、tdate、datetime、timestamp类型的字段在select查询时使用like ‘%中文%’ 会出现错误类型,而这个mysql版本不支持like ‘中文’,所以要修改为like binary
直接打开开发环境中的django配置
cd ~/。virtualenv/Django/lib/python3.8/site-packages/django/db/backends/mysql
sudo vim base.py
找到operators,在icontains后面的like添加 BINARY
operators = {
'exact': '= %s',
'iexact': 'LIKE %s',
'contains': 'LIKE BINARY %s',
'icontains': 'LIKE BINARY %s',
'gt': '> %s',
'gte': '>= %s',
'lt': '< %s',
'lte': '<= %s',
'startswith': 'LIKE BINARY %s',
'endswith': 'LIKE BINARY %s',
'istartswith': 'LIKE %s',
'iendswith': 'LIKE %s',
}