MediaWiki 1.22升1.32迁移SQLite数据库遇只读错误求助
MediaWiki 1.22 升级至1.32 SQLite迁移错误解决与完整步骤
错误根源
报错信息中attempt to write a readonly database明确指向:Web服务器进程无SQLite数据库文件及所在目录的写入权限,导致升级时UPDATE site_stats、DELETE FROM objectcache等写操作失败。
快速解决当前权限问题
- 定位SQLite数据库文件:查看新环境
LocalSettings.php,找到$wgDBname指定的文件名(通常是.sqlite格式),默认存储在data目录下。 - 修改文件及目录权限(以Web服务器用户为
www-data为例):
注意:生产环境避免使用# 假设数据库文件路径为/var/www/html/mediawiki/data/localwiki.sqlite chown www-data:www-data /var/www/html/mediawiki/data/localwiki.sqlite chmod 664 /var/www/html/mediawiki/data/localwiki.sqlite # 修改目录权限确保Web服务可读写 chown -R www-data:www-data /var/www/html/mediawiki/data chmod 775 /var/www/html/mediawiki/data777权限,仅赋予Web服务器必要的读写权限。
完整的旧版SQLite迁移升级步骤
1. 旧环境数据备份
- 复制旧MediaWiki目录下的
LocalSettings.php文件 - 复制旧SQLite数据库文件(默认在
data目录下,如oldwiki.sqlite) - 备份所有用户上传的文件(默认存储在
images目录)
2. 部署新MediaWiki 1.32环境
- 下载MediaWiki 1.32安装包并解压到目标服务器目录(如
/var/www/html/mediawiki) - 将备份的
LocalSettings.php复制到新目录,确认数据库配置:$wgDBtype = 'sqlite'; $wgDBname = 'localwiki'; // 对应数据库文件名localwiki.sqlite $wgSQLiteDataDir = "$IP/data"; // 数据库文件所在目录
3. 迁移数据库文件
- 将备份的旧SQLite数据库文件复制到新环境的
data目录,重命名为LocalSettings.php中$wgDBname指定的名称 - 执行前面的权限修复命令,确保Web服务器用户拥有读写权限
4. 执行数据库升级
- Web界面升级:访问新环境的
mw-config/index.php,选择「Upgrade」选项按提示完成 - 命令行升级(推荐,更稳定):
cd /var/www/html/mediawiki # 以Web服务器用户身份执行,避免权限问题 sudo -u www-data php maintenance/update.php
5. 验证升级效果
- 访问MediaWiki首页,确认页面正常加载
- 查看
Special:Version页面,确认版本已更新至1.32 - 测试页面编辑、文件上传等核心功能是否正常
内容的提问来源于stack exchange,提问作者Emrahall
相关产品推荐
相关产品推荐

