Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

执行DDL语句时, 语句全部被转成大写, 导致表名, 字段名不符合 #522

Closed
tonnyyi opened this issue Oct 28, 2015 · 3 comments

Comments

@tonnyyi
Copy link

tonnyyi commented Oct 28, 2015

环境:
系统: centos 7
mycat-server: v1.4

描述:
在linux环境下, 当通过数据端口执行DDL语句时(测试了create和drop语句), 语句被转成了大写格式, 而数据库的配置是大小写敏感的, 从而导致找不到表和字段.
截止目前(2015-10-28), 通过查看源码, 可以确定master分支, 1.4分支都有这个问题. 出现问题的位置是org.opencloudb.route.util.RouterUtil.getFixedSql()方法, 该方法内对sql语句执行toUpperCase操作.

建议:
取消toUpperCase操作, 并且后面的字符串判断使用类似org.apache.commons.lang3.StringUtils.startsWithIgnoreCase()方法.

@SimonDolph
Copy link
Contributor

权威指南上有说:
注意:Linux下部署安装MySQL,默认不忽略表名大小写,需要手动到/etc/my.cnf 下配置 lower_case_table_names=1 使 Linux环境下MySQL忽略表名大小写,否则使用MyCAT的时候会提示找不到表的错误!

不过我也同意你的建议 👍

@magicdoom
Copy link
Contributor

druid等在改写的时候也会改变大小写 所以设置成忽略大小写吧

@kkkkwqqqq
Copy link

权威指南上有说: 注意:Linux下部署安装MySQL,默认不忽略表名大小写,需要手动到/etc/my.cnf 下配置 lower_case_table_names=1 使 Linux环境下MySQL忽略表名大小写,否则使用MyCAT的时候会提示找不到表的错误!

不过我也同意你的建议 👍

改了也不行的。貌似不是lower_case_table_names=1的原因,你设置为1,那你的字段大写如何得到解决呢?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants