Help us test the SQLite implementation

A few months ago, a proposal was published to make WordPress officially support SQLite. After the proposal received a lot of positive feedback from the community, we started working on an implementation to make that happen.

Instead of releasing a separate feature pluginFeature Plugin A plugin that was created with the intention of eventually being proposed for inclusion in WordPress Core. See Features as Plugins., it was deemed preferable to implement this as a module in the Performance Lab pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party. As of version 1.8.0 of the Performance Lab plugin, the module is now available for testing.

EDIT: After feedback received in this post’s comments, the SQLIte database integration was also released as a separate, stand-alone plugin available on w.org/plugins/sqlite-database-integration.

We would like to urge hosts, plugin authors, and theme developers to test the implementation and help us move forward with this project – with the hope of merging an SQLite implementation in WordPress CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. in a future release.

How to test the SQLite implementation

In order to test using an SQLite database instead of MySQLMySQL MySQL is a relational database management system. A database is a structured collection of data where content, configuration and other options are stored. https://www.mysql.com/. for your WordPress site, you will need to follow the steps below:

Option 1 – If you are using the Performance Lab plugin on your site:

  1. Install and activate the Performance Lab plugin on your site.
  2. Navigate from your dashboard to Settings > Performance.
  3. Enable the SQLite module, and click “Save changes”.
  4. As soon as you save your changes, the plugin will automatically copy the db.php file in your wp-content folder, copy the data for the current user and site title, and also log you in for a more streamlined experience.

Option 2 – Using the stand-alone plugin:

  1. Install and activate the SQLite Database Integration plugin on your site.
  2. Follow the on-screen directions.
  3. As soon as you click the button to install the SQLite database, the plugin will automatically copy the db.php file in your wp-content folder, and you will be redirected to the WordPress-installation screen to set-up your new database.

Important note: When activating SQLite, your site will create an entirely separate and fresh database. We have implemented a basic setup so that you don’t have to go through the installation screens, but nothing else is migrated from the original database beyond that.

Frequently asked questions

Will I lose any data?

No. When you activate the SQLite implementation, a new database is created. Your old database remains unaltered, and when you disable the module, your site gets back to using its previous, unaffected MySQL database.

I had data on my old database, and I don’t see my posts, pages, users, etc, on my SQLite site.

The SQLite implementation does not include a way to migrate data from one database to another. Since this is a proposal for an implementation to be merged in WordPress Core, we need to follow the WordPress Core principles. Data migrationMigration Moving the code, database and media files for a website site from one server to another. Most typically done when changing hosting companies. is not something that Core should do; it is clearly plugin territory. Your data remains safely in your previous database, and you can access it again by disabling the SQLite module.

When SQLite gets merged in Core, migration and backup plugins will add support for it.

Will this work if I have another db.php file in my wp-content folder?

Unfortunately not. If your site already includes a db.php file in the wp-content folder, you will not be able to test SQLite on your site.

You can check if your site already includes a db.php file from another plugin by going from your dashboard to the plugins screen and then navigating to the Drop-in tab.

Keep in mind that this limitation only applies because the implementation is in a plugin, and therefore it needs the drop-in file. Once SQLite is part of Core, this will not be the case.

Historical/Implementation details

The code for the SQLite implementation was copied from https://github.com/aaemnnosttv/wp-sqlite-db/blob/master/src/db.php by Evan Mattson, which is a fork of the original work on the sqlite-integration plugin by Kojima Toshiyasu. It was then refactored, coding standards were applied, and an integration with the Performance Lab plugin was built.

The SQLite code used has been in use for many years and has been battle-tested. We opted to start with a tried solution instead of starting from scratch because many of the problems we would have encountered have already been addressed and solved in the pre-existing implementation.

Where to report issues and feedback

If there are issues that should be addressed, please create a new issue in the plugin’s GitHub repository. When you do, please be sure to mention your SQLite version. You can find it by going from your Dashboard to Tools > Site Health > Info > Database, while the SQLite module is active.

Props @flixos90 and @olliejones for reviewing this post.