liquibase mysql_如何使用Liquibase将存储过程导入到MySQL中?
发布日期:2021-06-24 16:28:31 浏览次数:2 分类:技术文章

本文共 4116 字,大约阅读时间需要 13 分钟。

我正在使用Gradle 2.7,MySQL 5.5.46和Liquibase-Gradle 1.1.1插件。我有一个存储过程看起来像...如何使用Liquibase将存储过程导入到MySQL中?

DELIMITER //

DROP PROCEDURE IF EXISTS MyProc;

CREATE PROCEDURE MyProc(

IN param1 VARCHAR(25),

IN param2 VARCHAR(5),

OUT outParam VARCHAR(2500))

BEGIN

END //

我能够导入这个文件很好的MySQL命令行。然而,当我创建这个Liquibase变更...

,并运行它,我得到的错误

Caused by: liquibase.exception.DatabaseException: 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 'DELIMITER //

DROP PROCEDURE IF EXISTS MyProc’ at line 1

at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:316)

at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:55)

at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:122)

at liquibase.database.AbstractJdbcDatabase.execute(AbstractJdbcDatabase.java:1227)

at liquibase.database.AbstractJdbcDatabase.executeStatements(AbstractJdbcDatabase.java:1210)

at liquibase.changelog.ChangeSet.execute(ChangeSet.java:550)

... 126 more

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 'DELIMITER //

DROP PROCEDURE IF EXISTS MyProc’ at line 1

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

at java.lang.reflect.Constructor.newInstance(Constructor.java:422)

at com.mysql.jdbc.Util.handleNewInstance(Util.java:400)

at com.mysql.jdbc.Util.getInstance(Util.java:383)

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:980)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3847)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3783)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2447)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2594)

at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2541)

at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2499)

at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:844)

at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:748)

at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:314)

什么我需要做的,纠正这一错误?

编辑:我删除每个答案的“分隔符”行让我的文件看起来像......

DROP PROCEDURE IF EXISTS MyProd;

CREATE PROCEDURE MyProc(

IN param1 VARCHAR(25),

IN param2 VARCHAR(5),

OUT outParam VARCHAR(2500))

BEGIN

END //

然而,在运行变更我得到这个错误...

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 'CREATE PROCEDURE MyProc(

IN param1 VARCHAR(25),

IN param2 VAR' at line 3

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

at java.lang.reflect.Constructor.newInstance(Constructor.java:422)

at com.mysql.jdbc.Util.handleNewInstance(Util.java:400)

at com.mysql.jdbc.Util.getInstance(Util.java:383)

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:980)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3847)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3783)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2447)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2594)

at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2541)

at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2499)

at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:844)

at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:748)

at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:314)

... 131 more

2015-11-19

Dave

转载地址:https://blog.csdn.net/weixin_33826897/article/details/113585096 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:mysql group by cube_测试db2的group by cube与oracle的差别
下一篇:linux c语言 创建可变文件名_Linux GCC简明教程(使用GCC编写C语言程序)

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月05日 10时14分49秒