首页 / 浏览问题 / 桌面GIS / 问题详情
idesktop 10i 数据库操作语句未区分大小写
8EXP 2021年08月13日

idesktop 新建表时是区分大小写的,怎么操作数据库时是全小写?mysql8.0大小写敏感必须在数据库初始化时设置,我不能还得重新初始化数据库吧?怎么解决这个问题呢?

1个回答

您好,试下最新版10.1.2 iDesktop是否可以操作,如果没有我找研发看一下。
jjz
4,720EXP 2021年08月13日

好的,版本很新,有趣的是我试图手动把表名改成小写,结果后续的sql又区分了大小写,所以还是无法完成,希望尽快修复

后续sql又区分是指什么?SQL查询的时候区分了是吗。提问中的截图您是执行什么操作的时候没有区分导致iDesktop报错?

忘了说,我是把本地的udb数据源数据集复制到mysql数据源里,应该有多条sql,一些sql未区分大小写,一些sql分了

这里贴出未区分的sql:select ifnull(max(a),0)+1 from (select max(SmDatasetID) as a from super_map.smregister UNION select max(smdatasetid) as a from super_map.smimgregister ) as b-Table 'super_map.smregister' doesn't exist;

区分的:SELECT COUNT(*) FROM super_map.SmImgRegister WHERE UPPER(SmDatasetName) = UPPER('贵州_县级行政区划图')-Table 'super_map.SmImgRegister' doesn't exist;

SELECT COUNT(*) FROM super_map.SmRegister WHERE UPPER(SmDatasetName) = UPPER('贵州_县级行政区划图')-Table 'super_map.SmRegister' doesn't exist;
 

您好,您查一下不是确实设置了大小写区分?

show Variables like '%table_names';

我联系我们这边有8.0.19MySQL的工程师测试,默认安装步骤是不区分大小写的。您用上边这个检查一下,如果返回值是1就是不区分,0是区分。如果确实是区分的,我和研发确认下对MySQL大小写是否有要求。

我们这边参考的是这篇教程

这个我也忘了说明,show variables like '%lower_case_table_names%';

在linux下mysql8.0安装完后是默认区分表名的大小写,不区分列名的大小写;而在Windows下都不区分大小写。

无论默认是否区分,我觉得sql的编写也应当有规范,而不是依赖数据库的设置。如果用户的数据库设计就是要严格区分大小写,该怎么使用这款产品呢?
我们的产品确实有很多不足,可能无法满足所有客户的所有需求,您说的意见我会反馈给研发。

您那边数据库在Linux机器上,但是连接是用的Win机器是吧。
是的,mysql在linux,很感谢您的回复。
您好,今天得到了确切的回复,短期内如果您要用还是只能改成大小写不敏感的。

目前研发那边考虑这个问题如果需要修改,设计的产品比较多,不光底层要改,iDesktop业务层也需要改。一开始设计就是参考的数据库创建默认大小写不敏感写的产品,而且有些业务语句是写死的,如果要改,还要兼顾上下兼容,短时间内难以实现,需要判断是否可行,这个会消耗大量的人力和时间。MySQL8.0 Linux修改了默认创建设置研发这边也是近期才发现,以前版本都和Win一样,默认不敏感的,所以这么多年一直适配的是不敏感的。而且超图产品也不支持所有的数据库操作,对于一些符号等也是不支持。这个大小写敏感的问题不是研发的重点问题,但是他们也在考虑这个问题,看看是否通过加双引号等就能使用,如果问题比较简单,解决起来就快,如果比较复杂,修改时间难以保证。综上所述,建议您将数据库改为大小写不敏感,保证正常使用,同时我这边报一个需求给研发。
...