我已经创建了一个表:
CREATE TABLE IF NOT EXISTS `tablename` (
..
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
然后,我通过myBatis (按照mapper.xml-file中的定义)运行查询:
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;
设置和got:
lower_case_file_system OFF
lower_case_table_names 0
这意味着如果我对https://mariadb.com/kb/en/identifier-case-sensitivity/的理解正确的话,那就是数据库表明表名是区分大小写的。为什么myBatis会在发出查询前强制将给定的小写名称转换为大写?
提前谢谢。
发布于 2020-01-14 18:13:52
抱歉,完全是我的错。更改了我的代码并提交了-但不是推送。因此,我在mapping.xml中所做的更改不会在部署中生效。查询,以我上面描述的方式工作。
https://stackoverflow.com/questions/59729666
复制相似问题