如何初始化Mediawiki共享数据库表并正确清空$wgSharedTables
操作步骤
- 临时清空
$wgSharedTables的方法
在运行网页安装器、或者执行maintenance/update.php升级脚本之前,直接在你的LocalSettings.php配置文件中添加一行代码,放在所有原有共享配置的最前面:
$wgSharedTables = [];
也可以直接注释掉所有你自己写的$wgSharedTables相关赋值行,效果完全一致。
- 完成初始化/升级后的配置修正
等站点核心安装完成、数据库表全部生成成功后,再恢复共享配置,注意你原有配置存在写法错误,这也是你共享库没有生成表的原因之一:
原错误写法是把整个数组作为单个元素追加到共享表列表中:
// 错误写法 $wgSharedTables[] = array('user','user_groups','actor');
正确写法有两种,根据你的需求选择:
- 如果要覆盖默认共享表列表,只共享你指定的三个表:
$wgSharedTables = ['user', 'user_groups', 'actor'];
- 如果要在默认共享表基础上追加这三个表:
$wgSharedTables = array_merge($wgSharedTables, ['user', 'user_groups', 'actor']);
- 共享库初始化补充操作
Mediawiki不会自动在$wgSharedDB指定的库中创建共享表结构,你需要手动完成这一步:
- 先在单个子站点完成初始化,生成完整的表结构
- 把需要共享的
user、user_groups、actor等表从子站点数据库迁移到wiki_shared库 - 再开启共享配置,所有子站点就会自动读取共享库的对应表
官方提到的升级阶段清空
$wgSharedTables的规则同样适用于首次初始化场景,只要你需要运行安装/升级脚本修改表结构,就需要临时禁用共享表配置,避免脚本无法正确识别表的归属,导致表创建失败。
内容的提问来源于stack exchange,提问作者Farzad M.
相关产品推荐
相关产品推荐

