WordPress et SQLite en 2026 : état réel, tests et limites
WordPress

WordPress et SQLite en 2026 : état réel, tests et limites

SQLite Database Integration 3.1 : ce que fait le nouveau pilote, prérequis, sauvegarde avec WAL, verrous d'écriture testés et cas où rester sur MySQL.

Mis à jour le 1er novembre 2026. Article réécrit pour la version 3.1.2 de SQLite Database Integration (28 octobre 2026) : nouveau pilote de la version 3.0, emplacement de la base, absence de migration, et deux tests réalisés sur notre poste (copie d’une base en mode WAL, écritures concurrentes).

Faire tourner WordPress sans serveur MySQL ni MariaDB, avec une base contenue dans un fichier SQLite, est possible grâce à une extension officielle du projet WordPress. En 2026, le sujet a changé de nature : le pilote a été réécrit, il émule bien mieux MySQL, mais il reste une extension de test, et non une fonction du cœur. Ce guide fait le point sur ce qui fonctionne, ce qui casse, et la façon d’exploiter ce montage sur une petite instance.

Où en est SQLite dans WordPress

ÉlémentÉtat relevé le 1er novembre 2026
ExtensionSQLite Database Integration, publiée par WordPress.org
Version3.1.2 du 28 octobre 2026
PrérequisWordPress 6.4, PHP 7.2, extension PDO SQLite, SQLite 3.37.0 ou plus récent
Testée jusqu’àWordPress 7.1.4
StatutExtension de fonctionnalité communautaire, destinée à préparer une intégration au cœur, sans calendrier annoncé

WordPress 7.1 ne sait toujours pas utiliser SQLite seul : il faut cette extension, qui remplace la couche d’accès à la base par une implémentation SQLite. WordPress continue d’utiliser l’API wpdb ; l’extension traduit et émule les requêtes MySQL.

Ce qu’a changé la version 3.0

La version 3.0.0, publiée en août 2026, a remplacé l’ancien traducteur par un pilote reconstruit : un analyseur lexical et syntaxique de la grammaire MySQL écrit en PHP, et une couche d’émulation. Il gère les jointures complexes, les sous-requêtes, les CTE et les unions, émule les tables INFORMATION_SCHEMA et les commandes SHOW et DESCRIBE, et reproduit de plus près les types, valeurs par défaut, modes SQL et transactions de MySQL. L’ancien pilote a été supprimé.

Ce pilote vient d’un long travail public. En juin 2025, l’équipe de WordPress Playground indiquait qu’il faisait passer plus de 99 % des tests PHPUnit du cœur et analysait sans erreur une suite d’environ 70 000 requêtes MySQL. Il fait fonctionner le site de WordPress Playground.

La version 3.0 a introduit des changements cassants pour les intégrations : le mode WAL devient la valeur par défaut, la constante DB_NAME doit être définie et non vide, plusieurs constantes et classes sont renommées. La 3.1.0 a ensuite placé la base à un emplacement aléatoire, avec la constante DB_PATH.

Installer sans se piéger

L’écran d’installation de l’extension vérifie la présence de PDO SQLite, le droit d’écriture sur wp-content et l’absence d’un autre fichier de remplacement de la base. Vérifiez avant tout la version de SQLite vue par PHP :

php -r "echo (new PDO('sqlite::memory:'))->query('select sqlite_version()')->fetchColumn(), PHP_EOL;"

Sur notre poste, PHP 8.3.30 renvoie 3.40.0, au-dessus du minimum de 3.37.0. Les versions 3.27 à 3.36 ne sont acceptées qu’avec une constante d’activation explicite, à éviter en production.

Trois points à connaître avant d’activer :

// wp-config.php, avant la ligne « That's all, stop editing! »
define( 'DB_PATH', '/var/lib/wordpress/monsite/base.sqlite' );

Le répertoire doit être accessible en écriture par l’utilisateur de PHP. Le chemin ci-dessus est un exemple : adaptez-le à votre serveur.

Test n° 1 : la copie d’un fichier en cours d’utilisation

Nous avons créé une base SQLite en mode WAL avec deux lignes, puis un script PHP y a ajouté 1 000 lignes en gardant sa connexion ouverte, comme le ferait un site actif. Pendant ce temps, nous avons comparé deux sauvegardes :

MéthodeLignes retrouvées dans la copie
Copie du seul fichier principal2
Commande .backup de SQLite1 002, contrôle d’intégrité « ok »
VACUUM INTO (essai séparé)Toutes les lignes, contrôle d’intégrité « ok »

Les 1 000 lignes récentes se trouvaient encore dans le fichier -wal. Une sauvegarde qui copie le seul fichier principal, comme le font beaucoup d’outils de sauvegarde de fichiers, perd donc les écritures récentes sans aucun message d’erreur. Utilisez l’API de sauvegarde de SQLite :

#!/bin/sh
BASE=/var/lib/wordpress/monsite/base.sqlite
DEST=/var/backups/wordpress/base-$(date +%F).sqlite
sqlite3 "$BASE" ".backup '$DEST'"
sqlite3 "$DEST" "PRAGMA integrity_check;"

Complétez avec wp-content/uploads, les thèmes et les extensions, et testez une restauration sur une instance séparée. Vérifiez aussi que votre extension de sauvegarde sait lire une base SQLite : une extension qui appelle mysqldump ne trouvera pas de serveur MySQL.

Test n° 2 : deux écritures en même temps

SQLite accepte de nombreuses lectures simultanées, mais une seule écriture à la fois. Nous avons ouvert une transaction d’écriture de six secondes dans un premier processus PHP, puis tenté une insertion depuis un second :

Délai d’attente du second processusRésultat
1 secondeErreur après 1,2 s : database is locked
10 secondesInsertion réussie dès la fin de la première transaction

Le mode WAL ne supprime pas cette règle ; il évite seulement que les lectures bloquent l’écriture. Tout dépend donc du délai d’attente et de la durée des transactions. La version 3.1.2 de l’extension permet de régler ce délai avec la constante SQLITE_BUSY_TIMEOUT. Un délai plus long transforme les erreurs en attentes, mais ces attentes s’additionnent si les écritures sont nombreuses.

Les écritures fréquentes ne viennent pas toujours des visiteurs : sessions, statistiques maison, journaux d’activité, files d’envoi de courriels et tâches planifiées écrivent aussi en base.

Compatibilité des extensions

Le nouveau pilote couvre bien mieux le SQL de MySQL, mais une extension peut encore poser problème si elle :

Le journal des modifications montre que des corrections continuent d’arriver chaque mois : arithmétique INTERVAL, FOUND_ROWS(), tables temporaires, ALTER TABLE (versions 3.1.1 et 3.1.2). Testez donc chaque extension métier sur une préproduction, en priorité les formulaires, la recherche, les exports et tout ce qui touche aux comptes clients. L’extension affiche ses informations dans Santé du site et prend en charge Query Monitor, pratique pour repérer une requête en échec.

Pour quels sites ?

UsageSQLitePourquoi
Environnement de test, démonstration, prototypeAdaptéInstallation sans serveur de base, copie simple de l’environnement
Documentation, blog personnel peu commentéEnvisageableÉcritures rares, surtout depuis l’administration
Site vitrine avec formulairesÀ testerSelon le volume et l’extension de formulaire
Boutique, adhésions, forum, LMSDéconseilléÉcritures concurrentes, données critiques
Multisite chargéDéconseilléVolume d’écriture et outils d’exploitation

Sur une micro-instance, le gain est réel mais limité : pas de processus MySQL qui réserve de la mémoire en permanence, une installation plus simple. En contrepartie, vous perdez les outils d’exploitation d’un serveur de base (réplication, sauvegardes à chaud éprouvées, outils de diagnostic). Pour choisir l’instance elle-même, voir notre comparatif des VPS à petit prix et notre comparatif d’hébergeurs.

Mettre à jour sans surprise

Le cœur, l’extension et ses constantes évoluent séparément, et la 3.0 comme la 3.1.0 contenaient des changements cassants. Avant chaque mise à jour de l’extension ou de WordPress : sauvegarde par .backup, mise à jour en préproduction, parcours de test, puis production. La méthode générale est détaillée dans notre guide de mise à jour sécurisée sur VPS.

Pour revenir vers MySQL ou MariaDB, il n’existe pas d’outil de bascule intégré. Les nouvelles tables utilisent par défaut l’interclassement utf8mb4_unicode_520_ci, choisi pour faciliter l’export vers MariaDB, mais une migration reste un projet : export, import sur une instance vierge, comparaison des contenus, des utilisateurs et des réglages, fenêtre de maintenance.

Questions fréquentes

SQLite fait-il partie de WordPress 7.1 ?

Non. Il faut l’extension SQLite Database Integration. Son objectif affiché est une intégration future au cœur, sans date annoncée.

Puis-je convertir mon site MySQL existant en activant l’extension ?

Non. L’activation crée une base vide et séparée. Il faut importer le contenu par un autre moyen, puis vérifier le résultat sur une préproduction.

Une sauvegarde de fichiers suffit-elle ?

Pas si elle copie le fichier de base pendant que le site écrit : notre test a perdu 1 000 lignes de cette façon. Utilisez .backup ou VACUUM INTO, puis contrôlez l’intégrité de la copie.

SQLite convient-il à une boutique WooCommerce ?

Nous le déconseillons. Commandes, paniers, stocks et sessions écrivent souvent en même temps, et une erreur database is locked au moment d’un paiement a un coût direct. Restez sur MySQL ou MariaDB.

Sources

Agence web PrestaShop & WordPress

Agence web spécialisée PrestaShop et WordPress : création, maintenance, sécurité, performance et référencement. Nos tutoriels sont issus de nos interventions sur de vraies boutiques.

L'agence Genisoft → LinkedIn →