手册:SQLite

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page Manual:SQLite and the translation is 100% complete.

Other languages:
English • ‎español • ‎polski • ‎العربية • ‎नेपाली • ‎中文 • ‎日本語
SQLite标志

从MediaWiki 1.17开始,对MediaWiki的SQLite支持具有生产质量。 自MediaWiki 1.13版以来,SQLite支持已成为主要代码库的一部分。 下面有一些关于将SQLite库安装到PHP环境中的注释。

关于SQLite

SQLite是一个发布到公共领域的开源数据库。 与客户端-服务器数据库管理系统不同,SQLite链入PHP的,因此成为不可或缺的一部分服务器进程。 MediaWiki通过简单的函数调用使用SQLite的功能,这减少了数据库访问中的潜伏,因为函数调用比进程间通信更有效。

使用SQLite作为MediaWiki的数据库后端有其自身的优点和缺点:

优点
  • 您不必安装和维护MySQL等独立数据库服务器,这大大减少了用于管理的工作并消除了一些失败点。
  • 前者也意味着SQLite更适合从USB记忆棒运行的便携式MediaWiki安装。
  • 您不受共享主机上的人为数据库限制的限制。
  • 整个数据库存储为单个跨平台文件,简化了备份和迁移。
缺点
  • SQLite不具备可扩展性,所以如果你有一个大而流行的wiki,你应该使用MySQL。
  • 虽然SQLite有自己的搜索引擎,但Lucene等更先进的解决方案并不支持它。
  • 某些PHP版本(RHEL5及更旧版本、旧版本的XAMPP)附带过时的SQLite版本,这些版本限制了功能并可能包含错误。
  • 已知有几个扩展具有SQLite的数据库更新或安装问题:AbuseFilter、Echo、Flow和LiquidThreads。

安装SQLite

虽然由于bug 25746,至少SQLite版本3.3.7是必需,但建议使用SQLite 3.6,因为它修复了一些数据完整性错误。 此外,为了使用全文搜索,必须在启用FTS3模块的情况下编译SQLite(大多数版本现在都开箱即用)。 SQLite3通过PHP的PDO函数工作。

  • 要在基于Debian的系统上安装SQLite3,请使用apt-get install php5-sqlite3
    • 在较新的Ubuntu和可能的其他发行版上,该包被称为php5-sqlite(最后没有3个!),请小心。
  • 来自php.net的Windows二进制文件都可以。
  • 自PHP 5.1.0起,SQLite依赖于PDO。您应该在php.ini中取消注释以下两行 (注意:有时你甚至不能使用phpinfo()来检查它们是否存在,因为当PDO不存在时,启用SQLite的PHP会崩溃或失败,尤其是在Windows上):
    • extension=php_pdo_sqlite.so(Windows:extension=php_pdo_sqlite.dll
    • extension=php_pdo.so(Windows:extension=php_pdo.dll
  • 你应该把SQLite数据库放在哪里?默认路径似乎是$IP/../data/$dbname.sqlite。
 webroot之外的任何东西都应该是安全的,把它放在附近是件好事。或者,如果您愿意,可以将其放在Web根目录中,并确保使用服务器配置拒绝访问它。

在SQLite后端安装MediaWiki

  • 如果正确安装了适用于PHP的SQLite模块,MediaWiki安装程序(/mw-config/index.php)应该为您提供使用SQLite的选项。 在1.16之前的MediaWiki版本上,您需要在数据库用户名和数据库密码字段中输入内容,以便安装程序继续,即使SQLite不需要它们。
  • 如果在SQLite数据目录字段中没有输入任何内容,则$wgSQLiteDataDir 将保留为空,这对应于文档根目录的父代中的data目录,但此目录可能与Web不同 脚本和维护脚本从命令行运行,因此建议明确指定它。

搜索引擎

MediaWiki版本: 1.16

MediaWiki 1.16中引入了SQLite后端的搜索功能。它们需要SQLite编译的FTS3模块,这通常存在于大多数现代版本中。 如果您最近将SQLite支持更新为包含FTS3的版本,运行更新程序,就像您要升级MediaWiki一样。 updater脚本创建搜索索引表后,使用rebuildtextindex.php 填充它。 同样适用于切换回没有FTS3的环境:重新运行更新程序将降级表以避免SQL错误。

备份

如果您的wiki当前处于脱机状态,则只需复制数据库文件即可备份其数据库。 否则,你应该使用维护脚本php maintenance/sqlite.php --backup-to <backup file name>,这将确保操作是原子的并且没有不一致。 如果您的数据库不是很大并且服务器没有负载很重,那么编辑维基的用户只会注意到短暂的延迟。 正在阅读的用户在任何情况下都不会注意到任何事情。

故障排除

无法访问终端上的数据库

要获得对数据库的命令行访问,请在终端上键入:

sqlite3 /var/data/database_name.sqlite

/var/data替换为在安装过程中设置为SQLite数据目录。 或者,在LocalSettings.php 中查找$wgSQLiteDataDir

如果您没有SQLite经验并运行sqlite3 database_name,这可能会很棘手,因为这将打开一个完全不同的数据库(如果它不存在则创建它),因为SQLite将该参数解释为不是系统全范围的数据库名称,而是作为包含db的文件名。

问题

应该将错误报告给维基媒体的错误跟踪器。 首先检查您的问题是否已经报告,检查任务T22257的依赖关系并使用搜索。 如果找不到问题,请创建新问题。 如果问题与SQLite后端直接相关,请在MediaWiki→'数据库组件下报告。 否则(如果问题与软件或扩展的一个非常具体的方面有关),请选择适当的产品和组件。 在任何情况下,请采取一些措施使您的错误易于查找和跟踪:提及SQLite是其摘要字段,并使其依赖于错误22257。

参见

外部链接