我们在 SpringBoot、Hibernate 和 Liquibase 上使用堆栈。我有一个包含 24000 个插入的 sql 文件。当我将其转换为 yaml(用于版本控制)时,我得到了一个巨大的 yaml 文件,我将其拆分为 16 个 yaml。使用 liquibase 命令行选项使用主文件插入非常快。但是使用 Spring 和 Hibernate,它就卡住了。最多5个文件就可以了。除此之外的任何东西都行不通。我尝试了 16 个文件中的 4 个文件,它也可以工作。因此,任何格式错误的 yaml 文件都不是问题。我还尝试在我的 application.yml 中使用以下属性。
spring:
datasource:
hikari:
maximum-pool-size: 100
properties:
hibernate:
jdbc:
batch_size: 200
Basically, it gets stuck at the changelog lock. This is what the log shows:
2019-10-17 18:10:26.375 INFO 1 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
2019-10-17 18:10:26.387 WARN 1 --- [ main] com.zaxxer.hikari.util.DriverDataSource : Registered driver with driverClassName=com.mysql.jdbc.Driver was not found, trying direct instantiation.
2019-10-17 18:10:26.927 INFO 1 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
2019-10-17 18:10:27.760 INFO 1 --- [ main] liquibase.executor.jvm.JdbcExecutor : SELECT COUNT(*) FROM pbr.DATABASECHANGELOGLOCK
2019-10-17 18:10:27.794 INFO 1 --- [ main] liquibase.executor.jvm.JdbcExecutor : SELECT COUNT(*) FROM pbr.DATABASECHANGELOGLOCK
2019-10-17 18:10:27.804 INFO 1 --- [ main] liquibase.executor.jvm.JdbcExecutor : SELECT `LOCKED` FROM pbr.DATABASECHANGELOGLOCK WHERE ID=1
2019-10-17 18:10:27.812 INFO 1 --- [ main] l.lockservice.StandardLockService : Waiting for changelog lock....
2019-10-17 18:10:37.816 INFO 1 --- [ main] liquibase.executor.jvm.JdbcExecutor : SELECT `LOCKED` FROM pbr.DATABASECHANGELOGLOCK WHERE ID=1
2019-10-17 18:10:37.821 INFO 1 --- [ main] l.lockservice.StandardLockService : Waiting for changelog lock..
那没起效。请帮我。
插入如下: databaseChangeLog:-changeSet:id:15706644546-4 作者:pbr-admin 更改:-插入:列:-列:名称:model_id 值:xxxxx -列:名称:category_id 值:ALL_TRANSACTIONS -列:名称: afpr_indexed valueBoolean: false - column: name: score valueNumeric: xxx
更改日志是特定于 liquibase 的。