当前位置: 首页 > 知识库问答 >
问题:

使用MariaDB创建一个新的SQL函数失败并出现多个错误

阙佐
2023-03-14
DELIMITER //
CREATE FUNCTION second_diff(dateColA timestamp, dateColB timestamp) RETURNS INT
BEGIN
    DECLARE diff INT;
    if dateColB is null then
        SET diff = TIMESTAMPDIFF(SECOND, dateColA, current_timestamp);
    else
        SET diff = TIMESTAMPDIFF(SECOND, dateColA, dateColB);
    end if;
    RETURN diff;
END;
//
DELIMITER ;

UPDATE version SET current_version = '1.0.1';

执行错误:分隔符。原因:java.SQL.sqlsyntaxerrorexception:(CONN=1720684)您的SQL语法中有一个错误;请查看与您的MariaDB服务器版本相对应的手册,以获得在第1行更新版本集current_version='1.0.1'处“delimiter”附近使用的正确语法

编辑:只有当我在不同的服务器上运行这个迁移脚本时才会失败。在我本地的机器上,一切都很好。我已经检查了两个不同的mariadbs的版本号。他们都一样。

共有1个答案

丁雅逸
2023-03-14

我找到问题了。在不同的服务器上运行迁移脚本时,使用mybatis来执行它。根据这个问题,在使用分隔符时您需要一个特殊的语法。所以不使用

分隔符//分隔符;

有必要写

 类似资料:
  • 当我尝试重建project时,android studio给出了错误:

  • 当我构建应用程序时,出现错误 RuntimeException:清单合并失败,出现多个错误 下面是我的构建。gradle(project:appname): 我的舱单:

  • 调试项目时,出现错误“清单合并失败,出现多个错误,请参阅日志” 任务“:app:processDebugMainManifest”的执行失败。错误:属性application@appComponentFactory值=(androidx.core.app.CoreComponentFactory)来自[androidx.core:core:1.5.0]AndroidManifest。xml:24:

  • 所以,我是Android和Java的初学者。我才刚开始学习。当我今天在进行意图实验时,我发生了一个错误。 我在这里找到了一些解决方案,并试图实施,但并不奏效。 这是我的建筑。格雷德尔: 这是我的AndroidManifest: null 这是我编写代码的第一个星期,如果这是一件非常愚蠢的事情,我很抱歉。我对此真的是初来乍到,也没找到别的地方问。如果我违反了任何规则,我很抱歉

  • 找不到方法“”无效组织。阿帕奇。平民压紧档案管理员。拉链齐普菲尔。(java.nio.channels.seekablebytechnel)“”无效组织。阿帕奇。平民压紧档案管理员。拉链齐普菲尔。(java.nio.channels.seekablebytechnel)' Gradle的依赖缓存可能损坏(有时会在网络连接超时后发生)。 重新下载依赖项和同步项目(需要网络)Gradle构建进程(守护

  • 我想通过对两个现有列应用函数,在数据框中创建一个新列。根据这个答案,当我只需要一列作为参数时,我就能够创建一个新列: 但是,当函数需要多个参数时,我不知道如何执行相同的操作。例如,如何通过将列a和列B传递给下面的函数来创建新列?