Почему Spring Batch создает таблицу нижнего регистра в MySQL на моем компьютере с Ubuntu 20.04?

#mysql #spring #spring-boot #spring-batch

Вопрос:

Я работаю над пакетным проектом Spring (работающим при загрузке Spring), и я сталкиваюсь с назойливой проблемой.

В основном до сих пор я использовал базу данных H2. Для того, чтобы начать производство (на машине Ubuntu 20.04), я пытаюсь заменить его MySQL.

Это была моя начальная конфигурация application.properties (с использованием базы данных H2):

 #Database Configuration
spring.datasource.url=jdbc:h2:mem:springbatch;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.username=sa
spring.datasource.password=
 

Поэтому я заменил эту конфигурацию этой новой конфигурацией, используя MySQL вместо H2:

 spring.datasource.platform=mysql
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/spring
spring.datasource.username=andrea
spring.datasource.password=Aprile_12_Test
spring.datasource.initialization-mode=always
 

Как вы можете видеть, режим инициализации установлен всегда, поэтому при запуске моего приложения Spring Batch таблицы будут создаваться в моей базе данных spring MySQL. Таблицы создаются, но они в нижнем регистре (в используемой схеме-файл mysql.sql все в верхнем регистре:

 mysql> show tables;
 ------------------------------ 
| Tables_in_spring             |
 ------------------------------ 
| BATCH_JOB_EXECUTION          |
| BATCH_JOB_INSTANCE           |
| DATABASECHANGELOG            |
| DATABASECHANGELOGLOCK        |
| batch_job_execution          |
| batch_job_execution_context  |
| batch_job_execution_params   |
| batch_job_instance           |
| batch_step_execution         |
| batch_step_execution_context |
 ------------------------------ 
 

Похоже, это является причиной какой-то ошибки, потому что тогда она не создает другую таблицу, используя таблицу со ссылкой в верхнем регистре.

Почему я сталкиваюсь с этой проблемой? Что я могу сделать, чтобы решить эту проблему? Существует способ указать использование имени в верхнем регистре, как определено в файле .sql?

Комментарии:

1. Всегда рекомендуется использовать имена в нижнем регистре, чтобы сделать его независимым от платформы. Linux и Windows относятся к ним по-разному.

Ответ №1:

Решил сам, разрешив Spring BootBatch создать таблицу базы данных в первый раз. В приложение.свойства::

 spring.datasource.initialization-mode=always
 

удаление библиотеки liquidebase из pom.xml:

 <!-- 
<dependency>
    <groupId>org.liquibase</groupId>
    <artifactId>liquibase-core</artifactId>
    <scope>runtime</scope>
</dependency>
-->
 

Окончательно отключив создание таблицы базы данных в приложении.свойства:

 spring.datasource.initialization-mode=never
 

Окончательно запустив пакет. Проблемы, похоже, ликвидированы.