mkh*_*red 4 java liquibase spring-boot
我正在使用Liquibase (v 3.5.3)和Spring Boot (v 1.5.3)。
我想使用 spring 引导属性文件更改 liquibase 更改日志表名称。
我发现这样做的唯一方法是设置liquibase.databaseChangeLogTableName和liquibase.databaseChangeLogLockTableName系统属性来覆盖默认表名。
有没有其他方法可以使用 spring 引导属性文件而不是设置系统属性来覆盖默认的 liquibase 表名称?
由于这是 1 岁,仍然是我为这个问题找到的第一个谷歌结果:
对于大约 spring boot 2.1.x(https://github.com/spring-projects/spring-boot/issues/15544 last response)设置这些属性对我有用:
spring.liquibase.database-change-log-lock-table=MY_CUSTOM_DATABASECHANGELOGLOCK
spring.liquibase.database-change-log-table=MY_CUSTOM_DATABASECHANGELOG
Run Code Online (Sandbox Code Playgroud)
小智 6
有同样的问题并设法通过覆盖 liquibase 全局配置来解决它。要获取databaseChangeLogTableName和databaseChangeLogLockTableName liquibase 创建LiquibaseConfiguration实例并初始化所有默认参数,但您可以使用下一个代码覆盖这些参数。下面是我的 Liquibase 配置文件和属性。
应用程序属性
## Liquibase default properties
application.local.database.liquibase.tag = application-integration
application.local.database.liquibase.change.log.table.name = DATABASE_CHANGE_LOG
application.local.database.liquibase.change.log.lock.table.name = DATABASE_CHANGE_LOG_LOCK
application.local.database.liquibase.should.run = true
application.local.database.liquibase.change.log = classpath:database/application-database-changes.xml
Run Code Online (Sandbox Code Playgroud)
Spring Boot 配置
import liquibase.configuration.GlobalConfiguration;
import liquibase.configuration.LiquibaseConfiguration;
import liquibase.integration.spring.SpringLiquibase;
... other dependencies...
@Configuration
public class LocalDatabaseLiquibaseConfig {
@Autowired
@Qualifier(ApplicationComponentNames.LOCAL_DATA_SOURCE)
private DataSource localDatabaseDataSource;
@Value("${application.local.database.liquibase.change.log.table.name}")
private String localDatabaseLiquibaseChangeLogTableName;
@Value("${application.local.database.liquibase.change.log.lock.table.name}")
private String localDatabaseLiquibaseChangeLogLockTableName;
@Value("${application.local.database.liquibase.tag}")
private String localDatabaseLiquibaseTag;
@Value("${application.local.database.liquibase.should.run}")
private boolean isLocalDatabaseLiquibaseShouldRun;
@Value("${application.local.database.liquibase.change.log}")
private String localDatabaseLiquibaseChangeLog;
@Bean
public SpringLiquibase liquibase() {
// Overwrite default liquibase table names by custom
GlobalConfiguration liquibaseConfiguration = LiquibaseConfiguration.getInstance().getConfiguration(GlobalConfiguration.class);
liquibaseConfiguration.setDatabaseChangeLogTableName(localDatabaseLiquibaseChangeLogTableName);
liquibaseConfiguration.setDatabaseChangeLogLockTableName(localDatabaseLiquibaseChangeLogLockTableName);
SpringLiquibase liquibase = new SpringLiquibase();
liquibase.setDataSource(localDatabaseDataSource);
liquibase.setShouldRun(isLocalDatabaseLiquibaseShouldRun);
liquibase.setChangeLog(localDatabaseLiquibaseChangeLog);
liquibase.setTag(localDatabaseLiquibaseTag);
return liquibase;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2169 次 |
| 最近记录: |