#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
Окончательно запустив пакет. Проблемы, похоже, ликвидированы.