首页
/ EasyScheduler 3.2.2版本MySQL升级脚本问题分析与修复

EasyScheduler 3.2.2版本MySQL升级脚本问题分析与修复

2025-05-17 08:33:04作者:凌朦慧Richard

在EasyScheduler从3.1.5版本升级到3.2.2版本的过程中,执行MySQL数据库升级脚本时出现了一个SQL语法错误。这个问题主要发生在执行3.2.0_schema下的dolphinscheduler_dml.sql文件时。

问题现象

当用户按照标准升级流程执行MySQL升级脚本时,系统会报出以下错误信息:

ERROR 1064 (42000) at line 34: 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 ;CALL dolphin_t_ds_tenant_insert_default();
DROP PROCEDURE dolphin_t_d' at line 1

问题根源分析

经过仔细检查,发现问题出在dolphinscheduler_dml.sql文件中存储过程的定义和使用部分。原始脚本中存在两个主要问题:

  1. 存储过程定义后的分隔符切换不明确
  2. 存储过程调用和删除的语句与分隔符切换语句混在一起

这种结构会导致MySQL解析器无法正确识别SQL语句边界,从而抛出语法错误。

解决方案

正确的脚本应该按照以下结构组织:

  1. 首先明确切换分隔符
  2. 定义存储过程
  3. 切换回标准分隔符
  4. 执行存储过程
  5. 删除存储过程

具体修正后的脚本如下:

drop PROCEDURE if EXISTS dolphin_t_ds_tenant_insert_default;
delimiter d//
CREATE PROCEDURE dolphin_t_ds_tenant_insert_default()
BEGIN
    IF
NOT EXISTS(SELECT 1
                   FROM t_ds_tenant
                   WHERE id = -1)
    THEN
        INSERT INTO `t_ds_tenant` VALUES ('-1', 'default', 'default tenant', '1', current_timestamp, current_timestamp);
END IF;
END;
d//

delimiter ;

-- 如果管理员账号未关联租户,则将其租户设置为默认租户
UPDATE `t_ds_user` SET `tenant_id` = '-1' WHERE (`user_name` = 'admin') AND (`tenant_id` = '0');

CALL dolphin_t_ds_tenant_insert_default();
DROP PROCEDURE dolphin_t_ds_tenant_insert_default;

技术要点说明

  1. 分隔符使用:在MySQL中定义存储过程时,由于过程体内可能包含分号,需要临时更改分隔符以避免提前结束语句。

  2. 存储过程设计:这个存储过程的作用是检查并插入默认租户记录,确保系统始终有一个ID为-1的默认租户。

  3. 数据一致性:脚本中还包含一个UPDATE语句,确保管理员账号与默认租户关联,这是系统升级过程中保证数据一致性的重要步骤。

升级建议

对于使用EasyScheduler的用户,在进行版本升级时应当:

  1. 始终先备份数据库
  2. 仔细检查升级脚本的执行结果
  3. 遇到错误时查看详细的错误信息
  4. 可以分步执行复杂脚本,而不是一次性执行整个文件

这个问题的修复已经包含在后续版本中,用户可以直接使用修正后的脚本完成升级过程。对于已经遇到此问题的用户,可以手动修正脚本后继续执行升级流程。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
22
6
docsdocs
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
205
2.18 K
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
208
285
pytorchpytorch
Ascend Extension for PyTorch
Python
62
95
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
977
575
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
9
1
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
550
86
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
1.02 K
399
communitycommunity
本项目是CANN开源社区的核心管理仓库,包含社区的治理章程、治理组织、通用操作指引及流程规范等基础信息
393
27
MateChatMateChat
前端智能化场景解决方案UI库,轻松构建你的AI应用,我们将持续完善更新,欢迎你的使用与建议。 官网地址:https://matechat.gitcode.com
1.2 K
133