myBatis“ SELECT”在Linux上使用大写表名失败

问题描述 投票:0回答:1

我创建了一个表:

CREATE TABLE IF NOT EXISTS `tablename` (
..
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

然后我通过myBatis运行一个查询(在mapper.xml文件中定义):

SELECT .. FROM `tablename`;

此查询失败,并带有

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'databasename.TABLENAME' doesn't exist

如何强制myBatis使用指定的小写名称“ tablename”查询而不是进行大写翻译?

我发现:https://mybatis.org/generator/configreference/table.html,据说myBatis从数据库本身获取有关如何处理区分大小写的信息。所以我用

SHOW VARIABLES;

设置并获得:

lower_case_file_system OFF
lower_case_table_names 0

[这意味着,如果我理解https://mariadb.com/kb/en/identifier-case-sensitivity/正确,则该数据库指示表名区分大小写。为什么myBatis然后在发出查询之前将给定的小写名称强制转换为大写?

提前感谢。

mariadb mybatis identifier case-sensitive tablename
1个回答
0
投票

抱歉,完全是我的错。已经更改了我的代码并提交了-但未推送。因此,我对mapping.xml所做的更改在部署中未激活。该查询是我上面描述的方式。

© www.soinside.com 2019 - 2024. All rights reserved.