我刚刚升级到 2.1.1 版,现在我看到一个奇怪的错误 - 当我针对我们的暂存和生产数据库服务器上的数据库运行 migrate 命令时,它会失败并出现 Flyway 异常,但它在我们的开发服务器上运行良好.
这是失败时的调试输出:
DEBUG: Adding location to classpath: C:\workspace\flyway\bin\..\jars\jtds-1.2.7.jar
DEBUG: Database: Microsoft SQL Server 10.0
DEBUG: DDL Transactions Supported: true
DEBUG: Schema: dbo
DEBUG: Schema [dbo] already exists. Skipping schema creation.
DEBUG: No upgrade to the Flyway 2.0 format necessary for metadata table [dbo].[schema_version]
DEBUG: No metadata table upgrade to the Flyway 2.0.2 format necessary
DEBUG: No metadata table upgrade to the Flyway 2.1 format necessary
ERROR: Unexpected error
com.googlecode.flyway.core.api.FlywayException: Current schema not set for connection! Check your database configuration!
at com.googlecode.flyway.core.dbsupport.DbSupport.getCurrentSchema(DbSupport.java:79)
at com.googlecode.flyway.core.Flyway$1.execute(Flyway.java:855)
at com.googlecode.flyway.core.Flyway$1.execute(Flyway.java:815)
at com.googlecode.flyway.core.Flyway.execute(Flyway.java:1177)
at com.googlecode.flyway.core.Flyway.migrate(Flyway.java:815)
at com.googlecode.flyway.commandline.Main.executeOperation(Main.java:118)
at com.googlecode.flyway.commandline.Main.main(Main.java:86)
在检查元数据表时,它显然是在找到模式,但由于某种原因,它不相信它是稍后设置的。
架构本身在 flyway.properties 文件中定义 -
flyway.schemas=dbo
我找不到会导致此错误的 dev 和 staging/prod 之间的任何差异。
如果它有所作为,这是在“干净”和“初始化”之后发生的......
关于在哪里看的任何建议?
编辑(对于未来有同样问题的人): Axel 关于登录在出现问题的服务器上没有默认架构是正确的。当我跑
SELECT SCHEMA_NAME()
在我们的 DEV 服务器上,我得到了“dbo”;但是当我在我们的 ACC 和 PROD 服务器上运行它时,我只会得到“NULL”。