手元に Oracle がないのですが、会社で開発環境に Flyway を導入しようと思い試していたところ、以下の様な SQL 文を Flyway に食わせると ORA エラーが出ました。
(投げている SQL によって ORA-01735 だったり ORA-00935 だったり…)
Patch.sql
INSERT INTO hoge VALUES (4, "Fuga")
/
ALTER TABLE foo DROP COLUMN bar
/
commit
/
会社でこれまで作っていたデータパッチは SQL*Plus や SI Object Browser で流すことを想定していたのですが、 Flyway ではこれじゃダメで、1文ずつセミコロンで区切って、スラッシュでのバッファの実行は要らないようです。
これを変えられないのでどうしようかといろいろ考えたのですが、結局はスラッシュのみの行をセミコロンのみの行に置換したパッチを作ることで回避。
自分は Gradle をつかって Flyway を走らせていたので、以下のように対処。
build.gradle
apply plugin: 'flyway'
(中略)
task copyPatch(type: Copy) << {
from 'fromdir'
into 'distdir'
filter { line ->
line.replaceAll '^/$' ';'
}
}
flywayMigrate.dependsOn copyPatch