Django admin后台页面管理搜索输中文报错解决办法

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',
     }

猜你喜欢

转载自blog.csdn.net/zly717216/article/details/105461213