🎉
[memo] gooseでfailed to ensure DB version: no next versionが発生した時
前提
-
goose
- go製のマイグレーションツール
- 検証時のバージョン: 3.7.0
- 利用RDBMS: MySQL8.0
事象
upやstatusなどのgooseコマンド実行時に以下のようなメッセージが表示される
$goose -dir ./db/migrations/ mysql "root:password@tcp(localhost:3306)/your-db?parseTime=true" status
goose run: failed to ensure DB version: no next version found
結論
gooseのバージョンテーブルが存在しない、またはテーブルはあるが初期レコードが存在しないことで発生すると思われる。
なのでテーブルを作成し初期レコードをINSERTすると解決する。
解決方法
- バージョンテーブルが存在するかどうか確認する
show tables like 'goose_db_version'
- テーブルが存在しない場合は作成する
create table goose_db_version
(
id bigint unsigned auto_increment
primary key,
version_id bigint not null,
is_applied tinyint(1) not null,
tstamp timestamp default CURRENT_TIMESTAMP null,
constraint id
unique (id)
);
- 初期レコードをINSERTする
INSERT INTO goose_db_version (version_id, is_applied) VALUES (0, TRUE);
Reference
Discussion