2

バージョン 2.1.1 にアップグレードしたところ、奇妙なエラーが表示されます。ステージングおよび運用データベース サーバー上のデータベースに対して実行すると、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 の違いは見つかりません。

違いがある場合、これは「クリーン」と「初期化」の後に発生しています...

どこを見るべきかについての提案はありますか?

EDIT(同じ問題を抱えている将来の人々のために): Axelは、ログインが問題を示しているサーバーにデフォルトのスキーマを持っていないことについて正しかった. 私が走るとき

SELECT SCHEMA_NAME()

私たちの DEV サーバーでは、「dbo」が返されます。しかし、それをACCおよびPRODサーバーで実行すると、「NULL」が返されます。

4

1 に答える 1

2

うーん、影響を受けるシステムのユーザーのデフォルト スキーマが null のようです。

問題を報告してください。次のバージョンでこのチェックを削除します。

それまでは、ユーザーにデフォルトのスキーマを与えれば問題ありません。

于 2013-03-20T09:42:38.957 に答える