我在处理大量数据时遇到这个奇怪的错误......
Error Number: 1267
Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='
SELECT COUNT(*) as num from keywords WHERE campaignId='12' AND LCASE(keyword)='hello again 昔 ã‹ã‚‰ ã‚ã‚‹ å ´æ‰€'
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能解决这个问题?我可以以某种方式逃避字符串,因此不会发生此错误,或者我是否需要以某种方式更改我的表格编码,如果是这样,我应该将其更改为什么?
刚刚从上一个问题得到了这个答案,它有效!
SELECT username, (SUM(rating)/COUNT(*)) as TheAverage, Count(*) as TheCount
FROM ratings WHERE month='Aug' GROUP BY username HAVING TheCount > 4
ORDER BY TheAverage DESC, TheCount DESC
Run Code Online (Sandbox Code Playgroud)
但当我坚持这个额外的位时,会出现这个错误:
文档#1267 - 操作'='的非法混合排序(latin1_swedish_ci,IMPLICIT)和(latin1_general_ci,IMPLICIT)
SELECT username, (SUM(rating)/COUNT(*)) as TheAverage, Count(*) as TheCount FROM
ratings WHERE month='Aug'
**AND username IN (SELECT username FROM users WHERE gender =1)**
GROUP BY username HAVING TheCount > 4 ORDER BY TheAverage DESC, TheCount DESC
Run Code Online (Sandbox Code Playgroud)
该表是:
id, username, rating, month
我正在看
OperationalError (1267, "Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='")
Run Code Online (Sandbox Code Playgroud)
看起来我的一些变量是UTF8字符串
'name':'p\xc7\x9d\xca\x87\xc9\x9f\xc4\xb1\xc9\xa5s徽章'
这是配置问题吗?如果是这样,我该如何解决?我想处理Unicode中的所有内容(我认为).
我创建了一个表并将排序规则设置为utf8,以便能够为字段添加唯一索引.现在我需要进行不区分大小写的搜索,但是当我使用collate关键字执行一些查询时,我得到了:
mysql> select * from page where pageTitle="Something" Collate utf8_general_ci;
Run Code Online (Sandbox Code Playgroud)
ERROR 1253(42000):COLLATION'utf8_general_ci'对CHARACTER SET'latin1'无效
mysql> select * from page where pageTitle="Something" Collate latin1_general_ci;
Run Code Online (Sandbox Code Playgroud)
ERROR 1267(HY000):操作'='的非法混合排序(utf8_bin,IMPLICIT)和(latin1_general_ci,EXPLICIT)
我对SQL很新,所以我想知道是否有人可以提供帮助.
mysql sql case-sensitive character-encoding mysql-error-1267
为了让网站接受用户提交的内容(可能不是英文版)(例如日文版)并将其保存到数据库中,最好是对所有新内容进行utf8_encode,并在以后检索时使用utf8_decode?
进一步的信息:我正在使用doctrine,我在尝试保存或选择Unicode字符到MySQL数据库时遇到错误:
SQLSTATE [HY000]:常规错误:1267操作'='非法混合排序(latin1_swedish_ci,IMPLICIT)和(utf8_general_ci,COERCIBLE)
出现以下错误的原因是什么?当我尝试过滤:
if MyObject.objects.filter(location = aDictionary['address']):
Run Code Online (Sandbox Code Playgroud)
位置定义为:
location = models.CharField(max_length=100, blank=True, default='')
Run Code Online (Sandbox Code Playgroud)
当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 '='")
Run Code Online (Sandbox Code Playgroud) 我想让password我的User表的列case sensitive在mysql中.
以下是该表的描述:
/*Table: mst_user*/
FIELD TYPE COLLATION
------------- ------------ -----------------
user_id VARCHAR(100) latin1_swedish_ci
first_name VARCHAR(25) latin1_swedish_ci
last_name VARCHAR(25) latin1_swedish_ci
USER_PASSWORD VARCHAR(50) latin1_swedish_ci
user_status INT(11) (NULL)
version_id INT(11) (NULL)
active_status INT(11) (NULL)
user_type INT(11) (NULL)
Run Code Online (Sandbox Code Playgroud)
为了使USER_PASSWORD字段区分大小写,我执行以下查询:
ALTER TABLE `mst_user` MODIFY `USER_PASSWORD` VARCHAR(50) COLLATE `latin1_general_cs`;
Run Code Online (Sandbox Code Playgroud)
这种方法很有效,现在该字段区分大小写.
但我有一个存储过程,它SELECT在此表上执行查询以检查用户是否存在给定的凭据.
存储过程::
CREATE PROCEDURE `usp_password_verify`(ip_login_id VARCHAR(200),
ip_user_password VARCHAR(200),
INOUT success INT(1),
INOUT tbl_usr_password VARCHAR(100),
INOUT pkg_user_password VARCHAR(100))
BEGIN
SELECT COUNT(*)
INTO success
FROM mst_user
WHERE UPPER (user_id) …Run Code Online (Sandbox Code Playgroud)