Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >操作'=‘的排序规则(utf8_unicode_ci,IMPLICIT)和(utf8_general_ci,IMPLICIT)的混合非法

操作'=‘的排序规则(utf8_unicode_ci,IMPLICIT)和(utf8_general_ci,IMPLICIT)的混合非法
EN

Stack Overflow用户
提问于 2012-08-02 02:05:04
回答 6查看 290.7K关注 0票数 184

MySql上的错误消息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '='

我已经通过了其他几个帖子,但无法解决这个问题。受影响的部分类似于以下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE users (
    userID INT UNSIGNED NOT NULL AUTO_INCREMENT,
    firstName VARCHAR(24) NOT NULL,
    lastName VARCHAR(24) NOT NULL,
    username VARCHAR(24) NOT NULL,
    password VARCHAR(40) NOT NULL,
    PRIMARY KEY (userid)
) ENGINE = INNODB CHARACTER SET utf8 COLLATE utf8_unicode_ci;

CREATE TABLE products (
    productID INT UNSIGNED NOT NULL AUTO_INCREMENT,
    title VARCHAR(104) NOT NULL,
    picturePath VARCHAR(104) NULL,
    pictureThumb VARCHAR(104) NULL,
    creationDate DATE NOT NULL,
    closeDate DATE NULL,
    deleteDate DATE NULL,
    varPath VARCHAR(104) NULL,
    isPublic TINYINT(1) UNSIGNED NOT NULL DEFAULT '1',
    PRIMARY KEY (productID)
) ENGINE = INNODB CHARACTER SET utf8 COLLATE utf8_unicode_ci;

CREATE TABLE productUsers (
    productID INT UNSIGNED NOT NULL,
    userID INT UNSIGNED NOT NULL,
    permission VARCHAR(16) NOT NULL,
    PRIMARY KEY (productID,userID),
    FOREIGN KEY (productID) REFERENCES products (productID) ON DELETE RESTRICT ON UPDATE NO ACTION,
    FOREIGN KEY (userID) REFERENCES users (userID) ON DELETE RESTRICT ON UPDATE NO ACTION
) ENGINE = INNODB CHARACTER SET utf8 COLLATE utf8_unicode_ci;

我使用的存储过程是这样的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE PROCEDURE updateProductUsers (IN rUsername VARCHAR(24),IN rProductID INT UNSIGNED,IN rPerm VARCHAR(16))
BEGIN
    UPDATE productUsers
        INNER JOIN users
        ON productUsers.userID = users.userID
        SET productUsers.permission = rPerm
        WHERE users.username = rUsername
        AND productUsers.productID = rProductID;
END

我是用php测试的,但SQLyog也出现了同样的错误。我还测试了重建整个数据库,但没有好的结果。

任何帮助都将不胜感激。

EN

回答 6

Stack Overflow用户

发布于 2015-02-10 21:52:33

我花了半天的时间寻找一个相同的“非法混合排序规则”错误的答案,这个错误与utf8_unicode_ci和utf8_general_ci之间的冲突有关。

我发现我的数据库中的一些列并不是专门整理的utf8_unicode_ci。看起来mysql隐式地整理了这些列utf8_general_ci。

具体地说,运行'SHOW CREATE TABLE table1‘查询会输出如下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
| table1 | CREATE TABLE `table1` (
`id` int(11) NOT NULL,
`col1` varchar(4) CHARACTER SET utf8 NOT NULL,
`col2` int(11) NOT NULL,
PRIMARY KEY (`col1`,`col2`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci |

注意行'col1‘varchar(4)字符集varchar NOT NULL没有指定排序规则。然后,我运行了以下查询:

ALTER TABLE table1 CHANGE col1 col1 VARCHAR(4) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL;

这解决了我的“非法混合排序规则”错误。希望这能对其他人有所帮助。

票数 32
EN

Stack Overflow用户

发布于 2015-11-09 12:49:45

我也有过类似的问题,但在过程中,当我的查询参数是使用变量(例如SET @value='foo' )设置的时候,我就遇到了这个问题。

导致这种情况的原因是collation_connection和数据库排序规则不匹配。更改collation_connection以匹配collation_database,问题就消失了。我认为这是一种比在param/value后面添加COLLATE更优雅的方法。

总而言之:所有排序规则都必须匹配。使用SHOW VARIABLES并确保collation_connectioncollation_database匹配(还要使用SHOW TABLE STATUS [table_name]检查表排序)。

票数 7
EN

Stack Overflow用户

发布于 2016-07-05 09:40:03

我的例子有点类似于@bpile的答案,是一个设置了collation-server = utf8_general_ci的my.cnf条目。在我意识到这一点后(在尝试了上面的所有方法之后),我强制将我的数据库切换到utf8_general_ci而不是utf8_unicode_ci,就是这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ALTER DATABASE `db` CHARACTER SET utf8 COLLATE utf8_general_ci;
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11770074

复制
相关文章
mysql: Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for opera
昨天把mysql里所有table的varchar字段的字符集,批量换成了utf8mb4/utf8mb4_unicode_ci ,以便能保存一些emoji火星文 , 结果有一个sql语句执行时,报错如下: Illegalmixofcollations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT)foroperation '= 观察了一下,这个sql使用了一个自定义的function,这个函数的入口参数为varchar,类似如下: CREAT
菩提树下的杨过
2018/01/18
1.2K0
Mysql Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operat
resolve:将比较等式的一边进行字符串转换,如:“CONVERT(a.field_a USING utf8) COLLATE utf8_unicode_ci”
WindWant
2020/09/11
1.2K0
scala implicit class
scala 是一门 scalable 的语言,扩展性很强。 implicit 是 scala 的一个关键词,当它被用于 class 时,该类将被认为是implicit class,它可以用来扩展现有类的行为和方法
全栈程序员站长
2022/11/17
2610
修改MySQL varchar类型字段的排序规则
记录一个在工作中遇到的问题,也不算是问题,为的是找一种简便的方法批量修改数据表字段的排序规则,在MySQL中叫collation,常常和编码CHARACTER一起出现的。collation有三种级别,分辨是数据库级别,数据表级别和字段级别。
用户3579639
2018/10/22
4.7K0
TIMESTAMP with implicit DEFAULT value is deprecated
 这个是在windows server2008下安装时遇到的错误,是在运行mysqld –initialize 这一语句时发生的warnning,这是一个配置错误。  解决办法  在mysql/my.ini 文件中的[mysqld]下添加一行explicit_defaults_for_timestamp=true。就可以了   这个语句的含义是 #开启查询缓存,这也是web缓存之一,对重复查询只需要在缓存中读取就可以,减少对数据库的访问。 
拓荒者
2019/03/11
1.4K0
[Warning] TIMESTAMP with implicit DEFAULT value is deprecated.
在免安装版mysql安装过程中出现:e:\java_software\mysql-5.6.21-winx64\mysql-5.6.21-winx64\bin>mysqld mysql  2017-04-01 10:44:04 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use –explicit_defaults_for_timestamp server option (see documentation for more details).  解决办法:需要在my.ini 下添加
拓荒者
2019/03/11
4.2K0
scala(4):implicit关键字
掌握implicit的用法是阅读spark源码的基础,也是学习scala其它的开源框架的关键,implicit 可分为:
yiduwangkai
2019/09/17
3920
OAuth 2.0 之 Authorization code 与 Implicit
OAuth 2.0 是用于授权的行业标准协议。我们常见的比如第三方登录、授权第三方应用获取保存在其它服务商的个人数据,这种都是 OAuth 2.0 的应用场景。
凌虚
2021/02/04
9170
spring security oauth2 implicit模式
前面三篇文章讲了client credentials、password以及authorization code授权模式,本文就来讲一下implicit模式。
code4it
2018/09/17
1.6K0
spring security oauth2 implicit模式
solidity智能合约implicit conversion异常
在使用^0.5.10版本的solidity时,如果使用this关键字会出现以下问题。
程序新视界
2019/08/01
6410
C#中的explicit和implicit了解一下吧
今天在研究公司项目框架的时候看到了下面的用法,public static implicit operator JsonData(int data);。貌似很久没用过这种隐式转换的写法了,因此重新温习一下C#中转换相关的知识。
依乐祝
2019/05/22
1.2K0
在onelogin中使用OpenId Connect Implicit Flow
onelogin支持多种OpenId Connect的连接模式,上一篇文章我们讲到了使用openId的Authentication Flow,今天我们将会讲解一下如何使用Implicit Flow。
程序那些事
2021/02/02
9480
linux系统下,警告:warning: implicit declaration of function ‘gets’ [-Wimplicit-function-declaration] 和 war
gets()函数的基本用法为: char *gets(char *s); 该函数的参数是一个字符数组,该函数的返回值也是一个字符数组。
黑泽君
2018/10/11
3.1K0
Implicit Language Model in LSTM for OCR 学习笔记
在本文中,我们试图改进对LSTMs的科学理解,特别是语言模型和LSTM中存在的字形模型之间的相互作用。 我们称这种内部语言模型为隐式语言模型(隐式LM)。 本文的贡献:1)在受控条件下建立隐式LM的存在; 2)通过找出它使用的上下文有多少个字符来描述隐式LM的本质。 我们所描述的隐式LM与上面讨论的文献19、20中的语言模型有所不同,因为学习语言模型的背景和要求不同:OCR明确要求学习字形模型而不是语言模型。最近的关于使用LSTM进行OCR的基准文件22并没有涉及这一点,而且据我们所知,文献中也没有涉及。
Natalia_ljq
2020/06/03
9370
Implicit Language Model in LSTM for OCR  学习笔记
scala 隐式详解(implicit关键字)
掌握implicit的用法是阅读Spark源码的基础,也是学习Scala其它的开源框架的关键,implicit 可分为: 隐式参数 隐式转换类型 隐式调用函数 1.隐式参数 当我们在定义方法时,可以把最后一个参数列表标记为implicit,表示该组参数是隐式参数。一个方法只会有一个隐式参数列表,置于方法的最后一个参数列表。如果方法有多个隐式参数,只需一个implicit修饰即可。 当调用包含隐式参数的方法是,如果当前上下文中有合适的隐式值,则编译器会自动为改组参数填充合适的值。如果没有编译器会抛出异
Albert陈凯
2018/04/04
1.4K0
warning: #1300-D: XXX inherits implicit virtual 报警
编译的时候出现了大量warning: #1300-D: XX_function inherits implicit virtual 的警告信息。
全栈程序员站长
2022/11/16
2760
(3.6)James Stewart Calculus 5th Edition:Implicit Differentiation
例如: x^2 + y^2 = 25 这个时候,我们知道 如果是函数, 用竖线检测, 需要把图像拆分
dodo_lihao
2018/09/12
6280
(3.6)James Stewart Calculus 5th Edition:Implicit Differentiation
Implicit super constructor BaseService() is undefined. Must explicitly invoke another constructor
今天遇到了这个问题,也在网上查了不少资料,为什么还要写这篇文章呢,看完之后您也许就了解我的意图了
johnhuster的分享
2022/03/28
3450
点击加载更多

相似问题

对于操作'=‘,MySQL排序规则(utf8_unicode_ci,IMPLICIT)和(utf8_general_ci,IMPLICIT)的非法混合

40

MySQL存储过程中操作'=‘的排序规则(utf8_general_ci,IMPLICIT)和(utf8_unicode_ci,IMPLICIT)的混合是非法的

265

mysql:错误代码[1267];操作'=‘的排序规则(latin1_general_cs,IMPLICIT)和(latin1_swedish_ci,IMPLICIT)的混合非法

30

非法混合排序规则(utf8_unicode_ci,矫顽力)和(utf8_general_ci,矫顽力)用于操作'=‘

30

MySQL错误代码: 1267。操作'locate‘的排序规则(utf8mb4_general_ci,IMPLICIT)和(utf8mb4_0900_ai_ci,IMPLICIT)的混合非法

110
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文