我最近将 Moodle 升级到版本 4.3,但当我尝试激活它时,编辑模式选项显示错误。平台更新没有显示错误;在之前的版本3.9中,它可以正常工作。这是系统的核心模块,应该采用什么方案呢?
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()
我已经调试了变量,我认为“external_functions”表中缺少这个插件,但我还没有看到如何修复它
记录缺失似乎很奇怪 - Moodle 4.0 添加了
core_change_editmode
服务
commit 09f6ce9fed752e47fc719228032aab075c526c09
Author: Bas Brands <[email protected]>
Date: Tue Jul 6 10:01:05 2021 +0200
MDL-71610 theme_boost: add a edit mode switch
该记录应该是在升级到4.3的过程中创建的
我会尝试在本地/开发站点上重新运行升级,并备份 3.9 站点。但是将调试切换到开发人员级别并检查错误。
在
config.php
中添加
@error_reporting(E_ALL | E_STRICT); // NOT FOR PRODUCTION SERVERS!
@ini_set('display_errors', '1'); // NOT FOR PRODUCTION SERVERS!
$CFG->debug = (E_ALL | E_STRICT); // === DEBUG_DEVELOPER - NOT FOR PRODUCTION SERVERS!
$CFG->debugdisplay = 1; // NOT FOR PRODUCTION SERVERS!
如果没有错误,重新运行后检查记录是否存在
SELECT *
FROM mdl_external_functions
WHERE name = 'core_change_editmode'
如果不存在,则 Moodle 存在问题
如果确实存在,那么升级后发生了一些事情