You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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等写操作失败。

快速解决当前权限问题

  1. 定位SQLite数据库文件:查看新环境LocalSettings.php,找到$wgDBname指定的文件名(通常是.sqlite格式),默认存储在data目录下。
  2. 修改文件及目录权限(以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/data
    
    注意:生产环境避免使用777权限,仅赋予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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 08:45:46