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

Moodle 4.3开启编辑模式时出现invalidrecord错误求助

修复Moodle 4.3激活编辑模式时的core_change_editmode缺失错误

从Moodle 3.9升级到4.3后激活编辑模式报错,核心原因是external_functions表中缺失core_change_editmode这条核心外部函数记录,以下是可行的修复方案:

方案1:运行CLI升级命令补全数据库(推荐)

Moodle的CLI升级脚本会自动检测并修复数据库中缺失的核心组件记录,这是最安全的修复方式。执行以下命令(根据你的服务器文件路径调整):

php admin/cli/upgrade.php

执行时确保服务器进程对Moodle文件和数据库有读写权限,命令完成后会自动同步所有核心组件的数据库记录。

方案2:手动插入缺失的数据库记录

如果CLI升级无法自动修复,可直接在数据库中插入对应记录。注意替换SQL中的表前缀(默认是mdl_,若你的站点前缀不同请修改):

INSERT INTO mdl_external_functions (name, component, classname, method, description, type, capabilities, services)
VALUES (
    'core_change_editmode',
    'core',
    'core_external\\editmode_external',
    'change_editmode',
    'Change the current user edit mode.',
    'write',
    'moodle/course:manageactivities',
    '["moodle_mobile_app","local_rest"]'
);

插入完成后必须清空Moodle缓存,避免缓存导致的问题:

  • 网页端:进入站点管理 > 开发 > 清除缓存
  • CLI方式:执行
    php admin/cli/purge_caches.php
    

方案3:验证升级完整性

完成修复后,检查以下内容确认问题解决:

  • 进入站点管理 > 服务器 > 环境检查,确认所有核心组件状态正常
  • 查看admin/upgrade_log.php日志,排查升级过程中是否有未被捕获的错误

原始错误信息

SELECT * FROM {external_functions} WHERE name = ?
[array (
  0 => 'core_change_editmode',
)]
Error code: invalidrecord
* line 1658 of /lib/dml/moodle_database.php: dml_missing_record_exception thrown
* line 1634 of /lib/dml/moodle_database.php: call to moodle_database->get_record_select()
* line 56 of /lib/external/classes/external_api.php: call to moodle_database->get_record()
* line 186 of /lib/external/classes/external_api.php: call to core_external\external_api::external_function_info()
* line 83 of /lib/ajax/service.php: call to core_external\external_api::call_external_function()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 14:46:07