Handleiding:SQLite

This page is a translated version of the page Manual:SQLite and the translation is 41% complete.
SQLite logo
SQLite logo

Het doel van deze pagina is het verzamelen van informatie en ervaringen over het gebruik van SQLite voor het gebruik van MediaWiki.

MediaWiki ondersteunt SQLite sinds 1.17, dit is echter een wat beperkte ondersteuning, je kunt dus wat problemen ontdekken. Meestal wordt de database MySQL gebruikt voor de MediaWiki. Zie Phabricator voor een lijst met opmerkingen. MediaWiki vereist minimaal SQLite versie 3.8. Ondersteuning voor SQLite door uitbreidingstoepassingen die de database veranderen varieert echter.

Is SQLite een goede keus voor de MediaWiki?

Er zijn twee belangrijke zaken om op te letten als je SQLite voor MediaWiki gebruikt. Ten eerste, hoewel vele extensies SQLite ondersteunen, zijn sommige extensies daar nog niet klaar voor. Ten tweede, SQLite bestrijkt maar één server. In het geval je wiki groeit naar meer gebruikers tegelijkertijd en een grote hoeveelheid inhoud, is het beter voor een databasesysteem als MySQL te kiezen dat het primary-replicamodel ondersteunt. As a result, if your wiki may depend on using these extensions, or it may need to use a primary-replica database system, it is best to use a MySQL database for your wiki. De beslissing om SQLite, MySQL of een ander databasesysteem te gebruiken neem je idealiter voor je je wiki aanmaakt, omdat het moeilijk is van SQLite naar MySQL te converteren wanneer je wiki al draait.

Over SQLite

SQLite is een open-source databasebibliotheek vrijgegeven in het publiek domein. In tegenstelling tot client-server databasemanagementsystemen is de ingebed in PHP en maakt zodoende integraal deel uit van het serverproces. MediaWiki uses SQLite's functionality through simple function calls, which reduces latency in database access as function calls are more efficient than inter-process communication.

SQLite als database-backend voor MediaWiki gebruiken heeft zijn eigen voor- en nadelen:

Voordelen
  • Het is niet noodzakelijk een zelfstandige database-server als MySQL te installeren en onderhouden; dit vermindert inspanningen voor en kansen op fouten bij beheer.
  • Voorgaande betekent ook dat SQLite geschikter is voor een MediaWiki-installatie vanaf een USB-stick.
  • Je bent niet beperkt door kunstmatige databasebeperkingen opgelegd door gedeelde hosts.
  • De complete database is opgeslagen als een enkel crosplatformbestand, vereenvoudigend backup en migratie.
Nadelen
  • SQLite is niet zo schaalbaar, als je een grote en populaire wiki hebt, gebruik dan liever MySQL.
  • Hoewel SQLite zijn eigen zoekmachine heeft wordt het niet ondersteund door geavanceerde oplossingen als Lucene.
  • Sommige uitbreidingen blijken databasewijzigings- of installatieproblemen te hebben met SQLite: AbuseFilter, Echo, Flow en LiquidThreads.

SQLite installatie

At least SQLite version 3.8+ is required. Also, in order to use full text search, SQLite must be compiled with FTS3 module enabled (most builds have it out of the box these days). SQLite3 works via PHP's PDO functions.

  • To install SQLite3 on a Debian or Ubuntu based system, use apt-get install php-sqlite3.
  • Windows binaries from php.net are OK.
  • The PHP PDO SQLite module needs to be loaded.

You should uncomment the following line in your php.ini

    • extension=pdo_sqlite
  • Where should you put the SQLite database itself? The default path seems to be $IP/../data/$dbname.sqlite .

Anything outside of the webroot should be safe; it's good to keep it nearby. Or, if you feel like it, you could put it in the web root somewhere and make sure to use webserver config to deny access to it.

Installing MediaWiki on SQLite backend

  • If SQLite module for PHP is properly installed, MediaWiki installer (/mw-config/index.php) should offer you an option to use SQLite.
  • If you enter nothing into the "SQLite data directory" field, your $wgSQLiteDataDir will be left empty, which corresponds to data directory in the parent of the document root, however this directory might be different for web scripts and maintenance scripts run from command line, so specifying it explicitly is recommended.

Search engine

MediaWiki-versie:
1.16

Search capabilities for SQLite backend was introduced in MediaWiki 1.16. They require SQLite with FTS3 module compiled-in, which is usually present in most modern builds. If you've recently updated your SQLite support to a version that includes FTS3, run the updater as if you're upgrading MediaWiki. After the updater script created the search index table, populate it with rebuildtextindex.php . Same applies to switches back to environments without FTS3: re-running the updater will downgrade the table to avoid SQL errors.

Backing up

If your wiki is currently offline, its database can be backed up by simply copying the database file. Otherwise, you should use a maintenance script: php maintenance/SqliteMaintenance.php --backup-to <backup file name>, which will make sure that operation is atomic and there are no inconsistencies. If your database is not really huge and server is not under heavy load, users editing the wiki will notice nothing but a short lag. Users who are just reading will not notice anything in any case.

Troubleshooting

Unable to access the database on the terminal

To get command-line access to the database, type on the terminal:

sqlite3 /var/data/database_name.sqlite

replacing /var/data with the directory that was set as the "SQLite data directory" during the installation process. Alternatively, look for $wgSQLiteDataDir inside LocalSettings.php .

This can be tricky if you are not experienced about SQLite and run sqlite3 database_name - because this will open a completely different database (creating it if it doesn't exist) since SQLite interprets the argument not as a system-wide database name, but instead as the file name that contains the db.

Problems

Bugs should be reported to Wikimedia's bug tracker. First check if your problem was already reported - check the dependencies of tag #sqlite and use search. If you can't find your problem, create a new issue. In any case please take some steps to make your bug easy to find and track: mention SQLite in its summary field and make it have the project tag SQLite.

See also

  • SQLite-specific configuration settings:

External links