You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ProcessMaker 3.7新建用户角色下拉无显示 报SQL日期错误寻修改位置

ProcessMaker 3.7 新建用户角色下拉为空问题修复

问题根因

  • 故障触发场景:全新安装ProcessMaker 3.7,创建新用户时角色下拉无选项
  • 接口报错信息:userAjax接口返回SQL执行错误,核心错误为Incorrect DATETIME value: '',触发问题的SQL片段为RBAC_ROLES.ROL_CREATE_DATE<>'' AND RBAC_ROLES.ROL_UPDATE_DATE<>''
  • 兼容性原因:MySQL 5.7及以上版本默认开启严格模式,不支持对DATETIME类型字段做空字符串不等值判断,正确判断非空的语法为字段名 IS NOT NULL

具体代码修改位置

你之前定位的ProcessMaker\BusinessModel\User路径下的UserRoles、BaseUserRoles类为上层业务封装类,实际构造SQL过滤条件的代码位置如下:

  1. 第一处修改(核心修复点)
    • 文件路径:workflow/engine/classes/model/Base/RbacRoles.php
    • 定位到构造角色列表查询条件的代码段,找到针对ROL_CREATE_DATE、ROL_UPDATE_DATE两个字段添加<>''判断的逻辑,将原空字符串判断替换为IS NOT NULL判断,对应Propel框架写法为:
    // 替换原 ROL_CREATE_DATE <> '' 条件
    $criteria->add(RbacRolesPeer::ROL_CREATE_DATE, null, Criteria::ISNOTNULL);
    // 替换原 ROL_UPDATE_DATE <> '' 条件
    $criteria->add(RbacRolesPeer::ROL_UPDATE_DATE, null, Criteria::ISNOTNULL);
    
  2. 第二处校验修改
    • 文件路径:workflow/engine/classes/class.userRoles.php
    • 定位到供新建用户接口调用的getAvailableRoles()方法,检查方法内的查询条件构造,如果存在对两个日期字段的空字符串判断,同步替换为IS NOT NULL写法。

修复后操作

  • 清除系统缓存:删除shared/compiled目录下所有编译缓存文件
  • 重新登录后台,进入新建用户页面验证角色下拉菜单加载正常,接口不再返回SQL错误

提示:如果使用MySQL 8.0版本,建议同步排查所有RBAC相关查询中对日期、时间字段的判断逻辑,统一将空字符串判断改为IS NULL/IS NOT NULL写法,避免同类报错。

内容的提问来源于stack exchange,提问作者dBillo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 20:42:21