myBatis "SELECT" завершается неудачно с именем таблицы в верхнем регистре на Linux - PullRequest
0 голосов
/ 14 января 2020

Я создал таблицу:

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

Затем я запускаю запрос через myBatis (как определено в маппере. 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 затем заставляет вводить строчные имена в верхний регистр перед отправкой запроса?

Заранее спасибо.

1 Ответ

0 голосов
/ 14 января 2020

Извините, полностью моя вина. Изменил мой код и зафиксировал - но не нажал. Таким образом, мои изменения в сопоставлении. xml не стали активными при развертывании. Запрос, как я описал выше, работает.

...