
在构建mediawiki家族(即多个wiki站点共享用户账户等数据)时,共享数据库是一个核心概念。它允许不同的wiki实例访问同一个用户表、用户组表等,从而提供统一的用户体验。mediawiki通过几个关键的配置变量来实现这一功能:$wgshareddb、$wgsharedtables 和 $wgsharedprefix。
许多用户在配置 $wgSharedTables 时常犯一个错误,即将一个包含多个表名的数组作为单个元素添加到 $wgSharedTables 数组中,导致配置未能正确识别各个共享表。例如,以下配置是不正确的:
// 错误示例:将一个数组作为单个元素添加到 $wgSharedTables 中
$wgSharedTables[] = array('user','user_groups','actor');这种写法会使得 $wgSharedTables 变成一个包含一个子数组的数组,而不是一个包含多个表名字符串的数组。正确的做法是确保 $wgSharedTables 直接包含表名字符串。以下是两种推荐的正确配置方式:
使用 array_merge() 合并表名: 这种方法特别适用于在已有 $wgSharedTables 配置的基础上添加新的共享表。
// 正确示例1:使用 array_merge() $wgSharedDB = 'wiki_shared'; $wgSharedTables = array_merge( $wgSharedTables, ['user','user_groups','actor'] ); $wgSharedPrefix = '';
逐个添加表名: 如果 $wgSharedTables 尚未初始化,或者你希望清晰地列出每个共享表,可以逐个添加。
// 正确示例2:逐个添加表名 $wgSharedDB = 'wiki_shared'; $wgSharedTables[] = 'user'; $wgSharedTables[] = 'user_groups'; $wgSharedTables[] = 'actor'; $wgSharedPrefix = '';
请确保这些配置行放置在 LocalSettings.php 文件中适当的位置。
自 MediaWiki 1.21 版本起,在通过 Web 安装器进行升级时,有一个重要的注意事项:必须临时清空 $wgSharedTables 配置。如果不清空,Web 安装器将不会触及任何共享表(无论是带有 $wgSharedPrefix 的表还是带有 $wgDBprefix 的表),这可能导致升级失败或共享表未被正确更新。
Web 安装器在执行升级操作时,需要确保所有相关的数据库表都能够被检查和更新。当 $wgSharedTables 被配置时,安装器会假设这些表已经存在并被正确管理,从而可能跳过对它们的检查和创建/更新操作。临时清空此配置,可以强制安装器将所有表(包括那些最终会共享的表)视为当前Wiki实例的本地表进行处理,确保它们被正确地创建或升级。
清空 $wgSharedTables 的方法非常简单,只需将其设置为空数组即可:
// 在升级期间,临时清空 $wgSharedTables $wgSharedTables = [];
操作步骤:
重要提示: 这种清空操作是临时性的,仅在升级过程中需要。升级完成后,必须恢复正确的 $wgSharedTables 配置,以确保共享功能正常工作。
正确配置 MediaWiki 共享数据库表是构建高效多站点环境的关键。请务必使用 array_merge() 或逐个添加的方式正确定义 $wgSharedTables。同时,在进行 MediaWiki 1.21 及更高版本的升级时,切记要临时清空 $wgSharedTables 配置,以确保所有数据库表都能被安装器正确处理,避免升级失败。遵循这些步骤将有助于你顺利地管理 MediaWiki 共享数据库环境。
以上就是MediaWiki 共享数据库表配置与升级指南的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号