首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql查询中错误排序规则的非法混合

mysql查询中错误排序规则的非法混合
EN

Stack Overflow用户
提问于 2013-10-28 13:59:15
回答 4查看 16.2K关注 0票数 4

有没有方法比较mysql查询中生成的range列?

代码语言:javascript
复制
SELECT ue.bundle,ue.timestamp,b.id,bv.id as bundleVersionId,bv.start_date,bv.end_date, bv.type,ue.type from (
 SELECT bundle,timestamp,tenant, case when Document_Id ='' then 'potrait'
 WHEN Document_Id<>'' then 'persisted' end   as type from uds_expanded ) ue
 JOIN bundle b on b.name=ue.bundle  join bundle_version bv on b.id=bv.bundle_id 
 WHERE ue.tenant='02306' and ue.timestamp >= bv.start_date and ue.timestamp <=bv.end_date and **ue.type=bv.type ;**

当我试图比较类型时,我会得到以下错误

代码语言:javascript
复制
 Error Code: 1267. Illegal mix of collations (utf8_general_ci,COERCIBLE) and (latin1_swedish_ci,IMPLICIT) for operation '=' 0.000 sec
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-10-28 14:02:36

对整个系统坚持一种编码/校对。现在,您似乎在使用UTF8,在另一个地方使用latin1。将后者也转换为使用UTF8,您将很好。

可以将排序规则更改为UTF8

代码语言:javascript
复制
alter table <some_table> convert to character set utf8 collate utf8_general_ci;
票数 7
EN

Stack Overflow用户

发布于 2014-08-30 01:15:10

我认为有时问题是我们使用不同的orm实用程序来生成表,然后我们希望通过mysql命令行或MySql工作台来测试查询,然后这个问题是由于表排序规则和我们使用的命令行或应用程序的不同而产生的。简单的方法是定义变量(用于测试表列查询的变量)。

例:

代码语言:javascript
复制
MySQL>
MySQL> set @testCode = 'test2' collate utf8_unicode_ci;
Query OK, 0 rows affected (0.00 sec)

MySQL> select * from test where code = @testCode;

全部细节

票数 5
EN

Stack Overflow用户

发布于 2016-08-02 13:36:10

请注意,单个列可以有它们的排序规则。

例如,Doctrine以CHARACTER SET utf8 COLLATE utf8_unicode_ci的形式生成VARCHAR类型的列,而更改表排序规则不会影响单个列。

可以使用以下命令更改列的排序规则:

代码语言:javascript
复制
ALTER TABLE `table` 
CHANGE COLUMN `test` `test` VARCHAR(15) CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'

或者在MySql工作台接口中->右键单击表-> Alter,然后在接口中单击列并修改它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19636743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档