博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySql数据库字段排序规则不一致产生的一个问题
阅读量:6147 次
发布时间:2019-06-21

本文共 1291 字,大约阅读时间需要 4 分钟。

最近项目向MySql迁移,迁移完毕后,在获取用户权限时产生了一个异常,跟踪进去获取执行的语句如下,

SELECT PermissionId   FROM spysxtPermission  WHERE (ResourceCategory = 'BaseUser'        AND ResourceId =  '003bf4bd072243fa90517ee2bc088cb7'       AND Enabled = 1         AND DeletionStateCode = 0)  UNION  SELECT PermissionId   FROM spysxtPermission        , ( SELECT RoleId   FROM spysxtUserRole  WHERE (UserId =  '003bf4bd072243fa90517ee2bc088cb7'        AND Enabled = 1         AND DeletionStateCode = 0 )  UNION SELECT RoleId   FROM BaseUserRole  WHERE ( UserId =  '003bf4bd072243fa90517ee2bc088cb7'        AND Enabled = 1         AND DeletionStateCode = 0 ) ) B    WHERE ResourceCategory =  'spysxtRole'       AND spysxtPermission.ResourceId = B.RoleId        AND spysxtPermission.Enabled = 1         AND spysxtPermission.DeletionStateCode = 0

在Navicate执行,提示如下:

这个语句在Oracle中执行都是正常的,一时不知道是什么原因,baidu了也没找到如何处理,我将语句逐个拆开执行,最终找到问题出在这里:

SELECT RoleId   FROM spysxtUserRole  WHERE (UserId =  '003bf4bd072243fa90517ee2bc088cb7' AND Enabled = 1 AND DeletionStateCode = 0 )   UNION SELECT RoleId   FROM BaseUserRole  WHERE ( UserId =  '003bf4bd072243fa90517ee2bc088cb7' AND Enabled = 1 AND DeletionStateCode = 0 )

看到这里,我突然想到有可能是字符集不一样造成的,打开表

 

原来问题出在排序规则上,一个是utf8_unicode_ci,一个是utf8_danish_ci。全部改为utf8_unicode_ci。问题解决!

原以为是代码bug,一直在调试代码,没想到问题出在这里。

 

转载地址:http://kamya.baihongyu.com/

你可能感兴趣的文章
bulk
查看>>
js document.activeElement 获得焦点的元素
查看>>
C++ 迭代器运算
查看>>
【支持iOS11】UITableView左滑删除自定义 - 实现多选项并使用自定义图片
查看>>
day6-if,while,for的快速掌握
查看>>
JavaWeb学习笔记(十四)--JSP语法
查看>>
【算法笔记】多线程斐波那契数列
查看>>
java8函数式编程实例
查看>>
jqgrid滚动条宽度/列显示不全问题
查看>>
在mac OS10.10下安装 cocoapods遇到的一些问题
查看>>
angularjs表达式中的HTML内容,如何不转义,直接表现为html元素
查看>>
css技巧
查看>>
Tyvj 1728 普通平衡树
查看>>
[Usaco2015 dec]Max Flow
查看>>
javascript性能优化
查看>>
多路归并排序之败者树
查看>>
java连接MySql数据库
查看>>
转:Vue keep-alive实践总结
查看>>
深入python的set和dict
查看>>
C++ 11 lambda
查看>>