【发布时间】:2012-10-14 08:44:36
【问题描述】:
我们使用 Flyway 1 个月以来没有遇到任何问题。
但是,今天我尝试添加一个很长(超过 1500 行)的新迁移脚本,遇到了一个奇怪的 MySQL 语法错误。
我在 MySQL Workbench 中打开了这个脚本,没有报告语法错误,脚本执行没有错误。
这个名为“V10012__insert-acceptance-testing-event-moment-passed.sql”的脚本包含以下说明。
- 插入语句 1
- 插入语句 2
- ...
- INSERT 语句 LAST - 1
- 最后插入语句
MySQL报错如下:
[错误] 由 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 你有一个 SQL 语法错误;检查与您对应的手册 MySQL 服务器版本,用于在“INSERT INTO”附近使用正确的语法 video_feedback (id, youtube_video_id) 值 ( 1102, /* id */' 在第 232 行 [错误] com.googlecode.flyway.core.migration.MigrationException:迁移到 10012版本失败!请恢复备份并回滚数据库 和代码!
错误是在“INSERT statement LAST”语句中报告的。
但是,如果我在脚本中反转“INSERT statement LAST”和“INSERT statement LAST - 1”,则会在“INSERT statement 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”脚本中可能存在什么问题?
是否存在可能的脚本大小限制?
以下是关于我的环境的有用信息:
- 我的脚本使用了很多 /* */ cmets
- 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
【问题讨论】: