【发布时间】:2021-07-16 16:43:07
【问题描述】:
我刚刚开始使用 Liquibase 进行 Sybase ASE 迁移。我遇到的问题是我们连接的数据库服务器有两个数据库 db_main 和 db_local。 db_main 包含包装器过程并引用 db_local 过程。在连接字符串中,我们传递 db_main。像这样-
spring.datasource.url=jdbc:jdts:sybase://serveraddress/db_main
spring.liquibase.default-schema: dbo
当 liquibase spring boot 应用程序启动时,它会在 db_main 数据库中创建 DATABASECHANGELOG 和 DATABASECHANGELOGLOCK 表,并在仅将更改隔离到 db_main 数据库时正确更新它们。但是,当我们尝试更新 db_local 数据库中的现有过程时,就像这样 -
use db_local
go
if object_id('employee_table_i') is not null
drop ....
...
Liquibase 抛出异常 -
Caused by: java.sql.SQLException: dbo.DATABASECHANGELOG not found. Specify owner.objectname or use sp_help to check whether the object exists
这是我的变更集 -
<changeSet author="12345" id="1">
<sqlFile path="classpath:/liquibase/features/employee_proc_i.sql" endDelimiter="go"/>
</changeSet>
我相信问题正在发生,因为 proc 有 -
使用 db_local
如果我将 changeSet 更新到下面,它可以正常工作 -
<changeSet author="12345" id="1">
<sqlFile path="classpath:/liquibase/features/employee_proc_i.sql" endDelimiter="go"/>
<sql>use db_main</sql>
</changeSet>
但我不确定这是唯一的方法还是有更好的方法。感谢您提供任何帮助或指导。
我正在使用带有 spring boot 的 liquibase-core 版本 - 4.4.1。
【问题讨论】:
标签: database spring-boot sybase liquibase