2013-03-18 51 views
1

我在为Moodle插件进行更新。基本上我想要做的就是添加一些字段到数据库中的现有表。在升级时调用upgradelib.php中的未定义函数

这里是我的upgrade.php从XML数据库编辑器内置:

function xmldb_qtype_myqtype_upgrade($oldversion = 0) { 
global $DB; 
$dbman = $DB->get_manager(); 

$result = true; 

if ($oldversion < 2013031601) { 

    // Define table solib to be created 
    $table = new xmldb_table('solib'); 

    // Adding fields to table solib 
    $table->add_field('id', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null); 
    $table->add_field('course', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, '0'); 
    $table->add_field('name', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null); 
    $table->add_field('timestamp', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null); 
    $table->add_field('server_addr', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, null); 
    $table->add_field('access_token', XMLDB_TYPE_INTEGER, '20', null, XMLDB_NOTNULL, null, null); 

    // Adding keys to table solib 
    $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id')); 

    // Conditionally launch create table for solib 
    if (!$dbman->table_exists($table)) { 
     $dbman->create_table($table); 
    } 

    // solib savepoint reached 
    upgrade_mod_savepoint(true, 2013031601, 'solib'); 
} 

return $result; 
} 

我也更新了install.xml文件,即使我不知道它的升级干涉,这只是该插件的新用户。

然后我改变version.php版本号和我运行更新,但我总是面临着这样的错误:

Fatal error: Call to undefined function xmldb_solib_upgrade() in /var/www/moodle/lib/upgradelib.php on line 629 

我想这是不是一个错误的Moodle,我失去了一些东西。但是什么?我做错什么了吗?

回答

1

已解决。

xmldb_qtype_myqtype_upgrade() 

需要被定义为:

xmldb_solib_upgrade() // plugin name as 'qtype_myqtype' 

主要的原因,为什么我没有理解错误,是因为它位于/moodle/lib/upgradelib.php,而不是在甩文件:/moodle/mod/solib/db/upgrade.php。这种精度在文档中也不是很清楚。

相关问题