Mysql转储注释指令和简单注释

时间:2013-04-16 12:24:11

标签: mysqldump flyway

我们计划使用Flyway来管理我们的迁移,因为它可以成为一个非常适合我们需求的强大工具。我们今天拥有的是用于开发的MySQL数据库,以及用于生产周期的mysql-oracle DB。

今天似乎不可能将Flyway与ant集成以处理mysqldump注释指令中的简单注释。它看起来像这样:

/*!50003 CREATE*/ /*!50020 DEFINER=`root`@`localhost`*/ /*!50003 PROCEDURE `lockObject`(
    IN parTypeId INTEGER,
    IN parObjectId INTEGER,
    IN parUserId INTEGER,
    IN parLockTime INTEGER,
    OUT parSuccess BOOLEAN,
    OUT parLockedOn INTEGER, /* time is elapsing from the beginning */
    OUT parErrUserId INTEGER)
BEGIN

    #proc declaration

END */;;

Flyway迁移返回以下错误

com.googlecode.flyway.core.api.FlywayException: Error executing statement at line 10807:    OUT parErrUserId INTEGER)
BEGIN
    DECLARE locTableName CHAR(50)
Caused by com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OUT parErrUserId INTEGER)

是否有某些我错过的东西可以允许处理这个“评论”重叠问题?

此致

1 个答案:

答案 0 :(得分:0)

将评论放在新行上,你应该好好去。 Flyway的解析器目前无法处理行尾注释和每行多个语句。

我打算及时解决这个问题。在此之前,请使用此解决方法。