我创建了一个表:
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然后在发出查询之前将给定的小写名称强制转换为大写?
提前感谢。
抱歉,完全是我的错。已经更改了我的代码并提交了-但未推送。因此,我对mapping.xml所做的更改在部署中未激活。该查询是我上面描述的方式。