oracle character set mismatch,EntityFramework查询oracle数据库时报ora-12704: character set mismatch...
1、这段linq,执行期间报ora-12704:character set mismatch错误。
1 var query = from m inctx.MENU2 where (m.SUPER_MENU_ID ?? "") == (parentMenuId ?? "")3 orderbym.SORT_ID descending4 select new { m.SORT_ID };
生成出来的sql如下:
1 SELECT "Project1"."SORT_ID" AS"SORT_ID"2 FROM(3
4 SELECT "Extent1"."SORT_ID" AS"SORT_ID"5 FROM"BA"."MENU" "Extent1"6 WHERE ((CASE WHEN("Extent1"."SUPER_MENU_ID" IS NULL) THEN ‘‘
7 ELSE "Extent1"."SUPER_MENU_ID" END) =
8 (CASE WHEN(&p__linq__0 IS NULL) THEN ‘‘
9 ELSE &p__linq__0 END))10
11 ) "Project1"12 ORDER BY "Project1"."SORT_ID" DESC
但是这条sql单独放到plsql里跑是OK的。
2、改成这样,让生成的sql去掉了里面的case when就OK了。
1 parentMenuId = parentMenuId ?? "";2 var query = from m inctx.MENU3 where m.SUPER_MENU_ID ==parentMenuId4 orderbym.SORT_ID descending5 select new { m.SORT_ID };
生成的sql如下:
1 SELECT "Project1"."SORT_ID" AS "SORT_ID" FROM(2
3 SELECT "Extent1"."SORT_ID" AS"SORT_ID"4 FROM"BA"."MENU" "Extent1"5 WHERE ("Extent1"."SUPER_MENU_ID" =:p__linq__0)6
7 ) "Project1"8 ORDER BY "Project1"."SORT_ID" DESC
3、目前的猜测是,ef生成出来的case
when有问题,调整linq不生成case
when即可。但奇怪的是,同样的sql在plsql里跑居然也是ok的,手工修改客户端的字符集也无法在plsql里重现这个问题,如下:
修改注册表里,HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient11g_home2\NLS_LANG,在plsql里客户端使用不同于服务端的字符集,但无法生成同样的错误。
修改前:
NLS_LANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBK
Character Sets
Character
size: 2 byte(s)
CharSetID: 852
NCharSetID: 2000
Unicode Support:
True
NLS_LANG: SIMPLIFIED CHINESE_CHINA.ZHS16GBK
NLS_CHARACTERSET:
ZHS16GBK
NLS_NCHAR_CHARACTERSET: AL16UTF16
修改后:
NLS_LANG = SIMPLIFIED CHINESE_CHINA.AL32UTF8
Character Sets
Character
size: 2 byte(s)
CharSetID: 873
NCharSetID: 2000
Unicode Support:
True
NLS_LANG: SIMPLIFIED CHINESE_CHINA.AL32UTF8
NLS_CHARACTERSET:
ZHS16GBK
NLS_NCHAR_CHARACTERSET: AL16UTF16
4、这个问题只是暂时解决,仍然存疑中,待完善。主要参考这篇:
原文:http://www.cnblogs.com/AlexanderYao/p/3571702.html
oracle character set mismatch,EntityFramework查询oracle数据库时报ora-12704: character set mismatch...相关推荐
- oracle9i 恢复数据库,oracle 9i使用闪回查询恢复数据库误删问题
如果用户误删/更新了数据后,作为用户并没有什么直接的方法来进行恢复,他们必须求助DBA来对数据库进行恢复,到了Oracle9i,这一个难堪局面有所改善.Oracle 9i中提供了一项新的技术手段--闪 ...
- 查询oracle的联机日志文件,查询Oracle日志文件的方法(摘自http://database.51cto.com/art/201010/231519.htm)...
Oracle日志文件相信经常使用Oracle数据库的朋友都比较熟悉了,下面将为您介绍的是查询Oracle日志文件的几种方法,供您参考学习. 1.查询系统使用的是哪一组日志文件: select * fr ...
- oracle查运行sql语句,查询Oracle正在执行的SQL语句
查询Oracle正在执行的sql语句及执行该语句的用户 查看正在执行sql的发起者的调用程序 查出oracle当前的被锁对象 结束当前的锁对象 无 SELECT b.sid oracleID, b.u ...
- oracle查大事务语句,查询Oracle 中死事务的语句
查询Oracle 中死事务的语句 SQL> SELECT KTUXEUSN, KTUXESLT, KTUXESQN, /* Transaction ID */ 2 KTUXESTA Statu ...
- PLSQL连接Oracle数据库时报ORA 12154错误的解决方法
pl/sql连接Oracle时遇到的问题: 解决办法:安装后将Oracle安装目录下的文件夹network(包括其中的子文件,其中主要是tnsnames.ora) 在pl/sql菜单–"工具 ...
- oracle+查表物理块数,查询Oracle表实际物理使用大小
效果如下: 或者 Select Segment_Name,Sum(bytes)/1024/1024 from User_Extents Group By Segment_Name; 效果如下:[这个查 ...
- oracle千万级数据模糊查询,oracle模糊查询效率拔高
分2种思路考虑模糊查询的效率的提高.--注:专注处理百万级数据量,小量数据就算了 第一种:把数据存到业务内存中,通过查询内存提高效率.(要求:硬件内存要高) 1,如果想实现内存动态数据,可以监控表数据 ...
- oracle在日期区间分页查询,Oracle 日期分页
1.[代码]Oracle日期和分页 select * from li.books where book_publish_date between '1-2月-2005' and '1-2月-2010' ...
- oracle中日期的模糊查询,oracle日期模糊查询
1,按时间段查询 issueDate ( 起始日期) issueTwoDate (结束日期) if (StringUtils.isNotEmpty(issueDate) &&am ...
最新文章
- java中的new_java里的new到底是什么意思?
- 教你动手推导Self-Attention!(附代码)
- Struts的ONGL
- 宝塔中mysql数据库命名小坑
- 银行现在都很缺钱吗,为什么给的利息比以前高了?
- unity中创建游戏场景_在Unity中创建Beat Em Up游戏
- iOS用workspace和cocoapods管理多个项目
- 基于无监督深度学习的单目视觉的深度和自身运动轨迹估计的深度神经模型
- Android控制WIFI相关操作
- [妙味Ajax]第三课:AJAX跨域解决方案:JSONP
- 基于pyspark 大数据分析_基于阿里云平台的大数据教学案例 —— B站弹幕数据分析...
- Dev c++6.0下载
- 数学牛人们的轶事[下]--zt 出处不详
- 阿拉伯数字转中国人民币大写字符串
- 高德地图驾车导航内存优化原理与实战
- 品牌的成功取决于质量的好坏
- 2021年中国皮革行业市场现状分析,PU合成革趋势明显,汽车皮革是关键需求「图」
- 人生算法第一天心得总结(A)九段进阶(3-6)
- 镍离子去除专业吸附技术,深度除镍工程段工艺设计
- android 查看设备 x86,有了它 x86安卓设备就能用Windows软件了