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

Davical添加组出现SQL语法错误,无法添加用户到组

问题解决:Davical创建组后访问组页面出现SQL语法错误

问题分析

从PostgreSQL错误日志的SQL语句可明确定位问题:

SELECT principal_id, coalesce(displayname,fullname,username) FROM dav_principal WHERE principal_id NOT IN (SELECT member_id FROM group_member WHERE group_id = 1019) AND principal_id != 1019ORDER BY 2

语句中1019ORDER部分缺失空格,导致PostgreSQL解析时将1019与ORDER识别为非法标识符,触发42601语法错误。这是动态拼接SQL字符串时的逻辑bug,根源为当前版本的Davical或其依赖的AWL库对PHP8.1兼容性不足。

解决方案

方案1:手动修复代码中的SQL拼接问题

根据栈跟踪信息,错误出现在组成员选项列表的构建逻辑中,需补全缺失的空格:

  1. 打开文件 /usr/share/davical/inc/ui/principal-edit.php
  2. 定位到edit_group_row函数内,找到类似principal_id != ' . $group_id . 'ORDER BY的代码行
  3. 在$group_id与ORDER之间添加空格,修改为principal_id != ' . $group_id . ' ORDER BY
  4. 保存文件后重启PHP-FPM服务:
    sudo systemctl restart php8.1-fpm
    

方案2:升级Davical和AWL库到兼容PHP8.1的版本

当前使用的Davical 1.1.11-1与libawl-php 0.63-1版本较旧,对PHP8.1支持不完善,可通过升级解决:

  1. 添加Davical官方PPA(未添加时执行):
    sudo add-apt-repository ppa:davical-maintainers/davical
    sudo apt update
    
  2. 升级相关组件:
    sudo apt upgrade davical libawl-php
    
  3. 重启服务生效:
    sudo systemctl restart php8.1-fpm nginx
    

方案3:临时降级PHP版本(可选)

若上述方案无法实施,可将PHP降级至对Davical 1.1.11兼容性更好的7.4版本:

  1. 添加第三方PHP PPA:
    sudo add-apt-repository ppa:ondrej/php
    sudo apt update
    
  2. 安装PHP7.4及所需扩展:
    sudo apt install php7.4-fpm php7.4-pgsql php7.4-xml php7.4-mbstring
    
  3. 修改Nginx配置,将FastCGI路径切换为unix:/run/php/php7.4-fpm.sock
  4. 重启服务:
    sudo systemctl restart php7.4-fpm nginx
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 12:35:19