Flyway Gradleプラグインを使用して、移行をオフラインで実行します(つまり、システムがダウンしている間に移行します)。最近Flyway 5.0.7にアップグレードしましたが、移行に関して次の警告が表示されます。
スキーマ履歴テーブルXXXXXXX
.flyway_schema_history
は見つかりませんでしたが、代わりにXXXXXXX
.schema_version
が見つかりました。このメッセージは、Flywayがバージョン5.0.0のflyway.tableのデフォルトをflyway_schema_historyに変更したため、古いデフォルト(schema_version)に依存しているために表示されます。これを修正するには、設定でflyway.table = schema_versionを設定します。このフォールバックメカニズムは、Flyway 6.0.0で削除されます。
(実際のスキーマ名をわかりにくくするためにXXXXXXXを使用しました)。
したがって、flyway.table = schema_versionを設定することでエラーを回避できるようです。ただし、このメカニズムはFlyway 6.0.0で削除される予定です。
今後、この互換性を保つために何かを行うことになっていますか? schema_versionテーブルの名前を手動でflyway_schema_historyに変更する必要がありますか?それとも、フライウェイにそれをさせる方法はありますか?そうでない場合、Flyway 6.0.0がリリースされるとどうなりますか?データを適切なテーブル名に自動的に移行しますか?
flyway.table
のデフォルトは、schema_version
からflyway_schema_history
に変更されました。また、古いデフォルトを使用して既存のインストールが壊れないように警告する古いデフォルトへの自動フォールバックも提供しています。
これは、フライウェイ5から、設定ファイル内でflyway.table
プロパティを指定しない場合、フライウェイはdbでテーブルflyway_schema_history
を探し、見つからない場合はフォールバックとしてテーブルschema_version
を探し、古いテーブルが見つかった場合その後、あなたが今得ているメッセージで警告します。フライウェイ6から、このフォールバックメカニズムは削除されます。 flyway.table
プロパティを指定しない場合、dbでflyway_schema_history
を探します。見つからない場合は、schema_version
テーブルを探しても、機能を維持するためにflyway_schema_history
という名前の新しいテーブルを作成します。
Flyway 6では、flyway.table=schema_version
を設定すると既存のシステムが正常に動作します。dbのテーブル名を変更する必要はありません。ただし、プロパティを設定しない場合、テーブル名を変更する必要があります。そうしないと、flywayは既存のschema_versionテーブルを認識せず、システムを新しいものとして扱い、flyway_schema_historyテーブルを作成し、最初からスクリプトの実行を開始します。
それが役立つことを願っています。
テーブルを他のテーブルにマッピングし、関連するレコードをコピーすることで、schema_versionからflyway_schema_historyに移行できます。
DROP TABLE IF EXISTS `flyway_schema_history`;
SET character_set_client = utf8mb4 ;
CREATE TABLE `flyway_schema_history` (
`installed_rank` int(11) NOT NULL,
`version` varchar(50) DEFAULT NULL,
`description` varchar(200) NOT NULL,
`type` varchar(20) NOT NULL,
`script` varchar(1000) NOT NULL,
`checksum` int(11) DEFAULT NULL,
`installed_by` varchar(100) NOT NULL,
`installed_on` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`execution_time` int(11) NOT NULL,
`success` tinyint(1) NOT NULL,
PRIMARY KEY (`installed_rank`),
KEY `flyway_schema_history_s_idx` (`success`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
insert into flyway_schema_history (installed_rank, version, description, type, script, checksum, installed_by, installed_on, execution_time, success)
select installed_rank, version, description, type, script, checksum, installed_by, installed_on, execution_time, success
from schema_version;
これは、flyway 5.2.2以降のflyway_schema_historyのスキーマバージョンです。このスクリプトを安全に使用し、このバージョンに移行する前に移行することをお勧めします。
このスクリプトは、dbコンソールでそのまま実行する必要があることを理解してください。このスクリプトはMySQL専用です。他のデータベース用に独自のものを作成する必要があります。