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

Alfresco CE 23.2集成Citus分布式功能时补丁应用失败求助

解决Alfresco CE 23.2 Citus分布式补丁执行失败问题

问题背景

使用Alfresco CE 23.2搭配PostgreSQL 15.9 + Citus 13.0.1扩展分布式功能,自定义创建了表分发SQL脚本,但启动alfresco.war时补丁执行失败,核心错误为:

ERROR [admin.patch.PatchExecuter] [main] 02020036 patch.schemaUpgradeScript.err.not_executed - [classpath:alfresco/dbscripts/upgrade/23.2/${db.script.dialect}/distribute-all-tables.sql]
Failed to apply patch         === ID: patch.db-v23.2-distribute-all-tables

排查与解决步骤

1. 确认SQL文件路径与存在性

  • 确保自定义SQL脚本distribute-all-tables.sql放在源码的正确目录:
    alfresco-community-repo/src/main/resources/alfresco/dbscripts/upgrade/23.2/postgresql/
    PostgreSQL对应的方言目录为postgresql,而非变量${db.script.dialect}。
  • 打包后检查alfresco.war内部是否包含该文件,路径需与补丁配置一致。

2. 检查补丁配置与方言变量映射

  • 找到补丁定义XML文件(通常在alfresco-community-repo/src/main/resources/alfresco/module/org.alfresco.repo.db/patches/db/23.2/下,如patch-db-v23.2-distribute-all-tables.xml),确认脚本路径配置正确:
    <patch id="patch.db-v23.2-distribute-all-tables" description="Distribute tables to Citus nodes" appliesFrom="23.2">
        <scripts>
            <script>classpath:alfresco/dbscripts/upgrade/23.2/${db.script.dialect}/distribute-all-tables.sql</script>
        </scripts>
    </patch>
    
  • 验证alfresco-global.properties中的数据库方言配置:
    db.dialect=org.hibernate.dialect.PostgreSQLDialect
    
    该配置会自动将${db.script.dialect}替换为postgresql,确保脚本路径有效。

3. 验证SQL脚本语法正确性

  • 直接在Citus主节点执行distribute-all-tables.sql中的语句,检查是否存在:
    • Citus分布式表创建语法错误(如CREATE DISTRIBUTED TABLE参数错误)
    • 引用不存在的Alfresco表名(注意是否配置了表前缀db.table.name.prefix)
    • 数据库用户权限不足(需确保Alfresco数据库用户拥有Citus分布式操作权限)

4. 开启DEBUG日志定位详细错误

  • 修改log4j2.xml,将补丁模块日志级别设为DEBUG:
    <Logger name="org.alfresco.repo.admin.patch" level="DEBUG" additivity="false">
        <AppenderRef ref="Console"/>
        <AppenderRef ref="File"/>
    </Logger>
    
    重启后可查看更详细的错误信息,明确是文件找不到还是SQL执行失败。

5. 临时方案:手动标记补丁为已执行

若已确认SQL脚本手动执行成功,可临时跳过补丁检查:

INSERT INTO alfresco.patch (id, description, applied, applied_on, succeeded)
VALUES ('patch.db-v23.2-distribute-all-tables', 'Distribute tables to Citus nodes', true, NOW(), true);

此为临时 workaround,建议优先排查根本原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 01:38:11