我们从 1 个月开始使用 Flyway,没有遇到任何问题。
但是,今天我尝试添加一个非常长(超过 1500 行)的新迁移脚本,并遇到了一个奇怪的 MySQL 语法错误。
我在 MySQL Workbench 中打开了这个脚本,没有报告语法错误,脚本执行没有错误。
这个名为“V10012__insert-acceptance-testing-event-moment-passed.sql”的脚本包含以下说明。
- 插入语句 1
- 插入语句 2
- ...
- INSERT 语句 LAST - 1
- INSERT 语句最后
MySQL报告的错误如下:
[ERROR] 由 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException 引起:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 232 行 [ERROR] com.googlecode.flyway.core. migration.MigrationException: 迁移到版本 10012 失败!请恢复备份并回滚数据库和代码!
该错误在“INSERT statement LAST”语句中报告。
但是,如果我在脚本中反转“INSERT 语句 LAST”和“INSERT 语句 LAST - 1”,则会在“INSERT 语句 LAST - 1”(现在位于文件末尾)上报告错误。所以我在“INSERT statement LAST”中没有错误,因为 Flyway 成功执行了它。
此外,如果现在我从脚本“V10012_insert-acceptance-testing-event-moment-passed.sql”中完全删除“INSERT statement LAST”语句,并将该语句放入一个名为“V10013 _test.sql”的新文件中,flyway 执行我所有的迁移脚本都成功了!
那么,我最初的“V10012__insert-acceptance-testing-event-moment-passed.sql”脚本中可能存在什么问题?
是否有可能的脚本大小限制?
以下是有关我的环境的有用信息:
- 我的脚本使用了很多 /* */ 注释
- Flyway Maven 插件 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的