1ヶ月から問題なくFlywayを使用しています。
しかし、今日、私は非常に長い(1500行を超える)新しい移行スクリプトを追加しようとしましたが、奇妙なMySQL構文エラーが発生しました。
このスクリプトをMySQLWorkbenchで開きましたが、報告されている構文エラーはなく、スクリプトはエラーなしで実行されました。
'V10012__insert-acceptance-testing-event-moment-passed.sql'という名前のこのスクリプトには、次の手順が含まれています。
- INSERTステートメント1
- INSERTステートメント2
- ..。
- INSERTステートメントLAST-1
- INSERTステートメントLAST
MySQLによって報告されたエラーは次のとおりです。
[エラー]com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorExceptionが原因:SQL構文にエラーがあります。MySQLサーバーのバージョンに対応するマニュアルで、232行目の[ERROR]com.googlecode.flyway.coreの'INSERT INTO video_feedback(id、youtube_video_id)VALUES(1102、/ * id*/'の近くで使用する正しい構文を確認してください。 migration.MigrationException:バージョン10012への移行に失敗しました!バックアップを復元し、データベースとコードをロールバックしてください!
エラーは「INSERTステートメントLAST」ステートメントで報告されます。
しかし、スクリプトで「INSERTステートメントLAST」と「INSERTステートメントLAST-1」を反転すると、エラーは「INSERTステートメントLAST-1」(現在はファイルの最後にあります)で報告されます。したがって、Flywayが正常に実行したため、「INSERTステートメントLAST」にエラーはありません。
また、スクリプト「V10012_insert -acceptance-testing-event-moment-passed.sql」から「INSERTステートメントLAST」ステートメントを完全に削除し、このステートメントを「V10013_test.sql」という名前の新しいファイルに入れると、フライウェイが実行されます。すべての移行スクリプトが正常に実行されました。
それで、私の最初の「V10012__insert-acceptance-testing-event-moment-passed.sql」スクリプトの問題は何でしょうか?
スクリプトサイズの制限はありますか?
これが私の環境に関する有用な情報です:
- 私のスクリプトはたくさんの/**/コメントを使用しています
- FlywayMavenプラグイン1.7
- Maven 2.0.3
- mysql:mysql-connector-java:5.1.21
- MySQL 5.5.X
- Java JDK 1.7.0_09-b05
- Windows 7