2

我刚刚升级到 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”。

4

1 回答 1

2

嗯,受影响系统上用户的默认架构似乎为空。

请提出问题,我将在下一个版本中删除此检查。

同时,如果你给你的用户一个默认的模式,你应该没问题。

于 2013-03-20T09:42:38.957 回答