mysql - mysql函数中的ibatis和定界符

标签 mysql ibatis mybatis delimiter

我尝试使用 Big DBA Head 中的以下示例在 ibatis 迁移脚本中。

delimiter //
drop function if exists true_function //
create function true_function(p_param int) returns int
  deterministic
  sql security invoker
  return true
//

drop function if exists get_next_value//
create function get_next_value(p_name varchar(30)) returns int
  deterministic
  sql security invoker
begin  
  declare current_val integer;

  update mysql.sequences 
    set value = value + 1
    where name = p_name 
      and true_function((@current_val := mysql.sequences.value) is not null);

  return @current_val;
end//
delimiter ;

但是 ibatis 抛出这个错误:

...Error executing: delimiter // drop function if exists get_next_value_test // create function get_next_value_test(p_name varchar(30)) returns int deterministic sql security invoker begin
declare current_val integer . Cause: 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 //...

我已经尝试设置 allowMultiQueries 和 send_full_script 但没有成功。 你有什么想法让这个脚本执行吗?

谢谢,

最佳答案

我遇到了同样的问题...

以下站点似乎提供了此问题的答案。

https://github.com/mybatis/migrations/issues/49

当然,它使用 MyBatis 而不是 iBatis,但考虑到 iBatis 已经“退休”,这可能是一个很好的举措。

替换的基本答案

delimiter //

-- @DELIMITER //

然后替换

delimiter ;

-- @DELIMITER ;

关于mysql - mysql函数中的ibatis和定界符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14607288/

相关文章:

java - Spring Boot的Mybatis ResultHandler无法运行

Java 删除 ResponseBody 中的属性

c# - 从表中检索数据以确认记录是否存在时如何修复 "Specified Cast Is Not Valid"错误?

mysql - 数百万条记录的最佳数据库解决方案是什么?

MySQL - 使用选择查询更新

java - 使用 Spring 和 IBATIS 进行特定查询的不同数据源

mysql - 如何将当前时间与其他已有的4个时间字段进行比较

ibatis - Spring4.2.0 不支持 iBatis

c# - 忽略缺失的列

java - MyBatis:从3.0.3升级到3.2.7时出错