by shigemk2

当面は技術的なことしか書かない

flyway-playのマイグレーション後にdrop tableしたらば

github.com

DBはMySQLで。

  1. flyway-playでマイグレーションする
  2. マイグレーションしたDBのテーブルを消す
  3. もう一度アクセスするとtable doesn't existになる

という流れになるので、テーブルschema_versionで対象となるレコード消してからもう一度play runなどするとまたマイグレーションが走る。

ちなみにschema_versionはこんなの。

mysql> select * from schema_version
    -> ;
+----------------+---------+--------------+------+----------------------+-------------+--------------+---------------------+----------------+---------+
| installed_rank | version | description  | type | script               | checksum    | installed_by | installed_on        | execution_time | success |
+----------------+---------+--------------+------+----------------------+-------------+--------------+---------------------+----------------+---------+
|              1 | 1       | Create table | SQL  | V1__Create_table.sql |   666517769 | root         | 2016-03-26 03:45:49 |             25 |       1 |
|              2 | 2       | Create table | SQL  | V2__Create_table.sql | -2132223336 | root         | 2016-03-26 03:45:49 |             11 |       0 |
+----------------+---------+--------------+------+----------------------+-------------+--------------+---------------------+----------------+---------+
2 rows in set (0.00 sec)

あと、SQLがsyntax errorなどを起こしても、同様のことが起こるので、やっぱりschema_versionの対象レコードを消すしか無い。