0

クリーン操作を実行したところです。prop ファイルに新しいスキーマを追加し、再度クリーンを実行してそのスキーマを db から削除しました。移行を実行しようとすると、次の結果が得られません。

Creating Metadata table: [xx].[schema_version]
Error executing statement at line 17: CREATE TABLE [xx].[schema_version] (
    [version_rank] INT NOT NULL,
    [installed_rank] INT NOT NULL,
    [version] NVARCHAR(50) NOT NULL,
    [description] NVARCHAR(200),
    [type] NVARCHAR(20) NOT NULL,
    [script] NVARCHAR(1000) NOT NULL,
    [checksum] INT,
    [installed_by] NVARCHAR(30) NOT NULL,
    [installed_on] DATETIME NOT NULL DEFAULT GETDATE(),
    [execution_time] INT NOT NULL,
    [success] BIT NOT NULL
);

CREATE INDEX [schema_version_vr_idx] ON [xx].[schema_version] ([version_rank]);
CREATE INDEX [schema_version_ir_idx] ON [xx].[schema_version] ([installed_rank]);
CREATE INDEX [schema_version_s_idx] ON [xx].[schema_version] ([success]);

また、sing init を初期化しようとすると、次のようになります。

 Creating Metadata table: [xx].[schema_version]
    Error executing statement at line 17: CREATE TABLE [xx].[schema_version] (
        [version_rank] INT NOT NULL,
        [installed_rank] INT NOT NULL,
        [version] NVARCHAR(50) NOT NULL,
        [description] NVARCHAR(200),
        [type] NVARCHAR(20) NOT NULL,
        [script] NVARCHAR(1000) NOT NULL,
        [checksum] INT,
        [installed_by] NVARCHAR(30) NOT NULL,
        [installed_on] DATETIME NOT NULL DEFAULT GETDATE(),
        [execution_time] INT NOT NULL,
        [success] BIT NOT NULL
    );

    CREATE INDEX [schema_version_vr_idx] ON [xx].[schema_version] ([version_rank]);
    CREATE INDEX [schema_version_ir_idx] ON [xx].[schema_version] ([installed_rank]);
    CREATE INDEX [schema_version_s_idx] ON [xx].[schema_version] ([success]);

ERROR: Occured in com.googlecode.flyway.core.dbsupport.SqlScript.execute() at line 91
ERROR: Caused by com.microsoft.sqlserver.jdbc.SQLServerException: The specified schema name "xx" either does not exist or you do not have permission to use it.
ERROR: Occured in com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError() at line 197

すべてのオブジェクトを削除しましたが、それらが DB インスタンスに存在しないことを確認できます。

どうすればこれを克服できますか?開発環境および本番環境でツールを使用する場合、db インスタンスを削除して再起動できないことが懸念されます。この時点で、ツールを使用して移行を行うことはできず、この問題を克服するためにデータベースを削除したくありません。

4

1 に答える 1

0

Flyway のスキーマ作成は現在、オール オア ナッシングの取引です。すべてのスキーマが欠落している場合はすべて作成されるか、少なくとも 1 つのスキーマが存在する場合は作成されません。

これは、xx を自分で作成するか、最初に他のスキーマを削除する必要があることを意味します。

于 2013-06-14T14:36:53.290 に答える