为什么 Spring Batch 在我的 Ubuntu 20.04 机器上的 MySql 上创建小写字母 table?
Why Spring Batch is creating lower case table on MySql on my Ubuntu 20.04 machine?
我正在处理一个 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
如您所见,初始化模式设置为 always 因此 运行 我的 Spring 批处理应用程序 table 将被创建进入我的 spring MySql 数据库。表已创建但它们是小写的(进入使用的 schema-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 |
+------------------------------+
这似乎是一些错误的原因,因为它不会使用带有大写引用的 table 创建其他 table。
为什么我会遇到这个问题?我能做些什么来解决这个问题?是否存在指定使用 .sql 文件中定义的大写名称的方法?
由我自己解决,允许 Spring Boot\Batch 第一次创建数据库 table。进入 application.properties::
spring.datasource.initialization-mode=always
正在从 pom.xml 中删除 liquidebase 库:
<!--
<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId>
<scope>runtime</scope>
</dependency>
-->
最终禁用数据库 table 创建到 application.properties:
spring.datasource.initialization-mode=never
终于运行批了。问题似乎是液基。
我正在处理一个 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
如您所见,初始化模式设置为 always 因此 运行 我的 Spring 批处理应用程序 table 将被创建进入我的 spring MySql 数据库。表已创建但它们是小写的(进入使用的 schema-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 |
+------------------------------+
这似乎是一些错误的原因,因为它不会使用带有大写引用的 table 创建其他 table。
为什么我会遇到这个问题?我能做些什么来解决这个问题?是否存在指定使用 .sql 文件中定义的大写名称的方法?
由我自己解决,允许 Spring Boot\Batch 第一次创建数据库 table。进入 application.properties::
spring.datasource.initialization-mode=always
正在从 pom.xml 中删除 liquidebase 库:
<!--
<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId>
<scope>runtime</scope>
</dependency>
-->
最终禁用数据库 table 创建到 application.properties:
spring.datasource.initialization-mode=never
终于运行批了。问题似乎是液基。