{"id":168657,"date":"2023-01-17T08:42:13","date_gmt":"2023-01-17T08:42:13","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/sqlite-database-integration\/"},"modified":"2026-10-08T14:58:16","modified_gmt":"2026-10-08T14:58:16","slug":"sqlite-database-integration","status":"publish","type":"plugin","link":"https:\/\/bn-in.wordpress.org\/plugins\/sqlite-database-integration\/","author":5911429,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"3.1.0","stable_tag":"3.1.0","tested":"7.1.3","requires":"6.4","requires_php":"7.2","requires_plugins":null,"header_name":"SQLite Database Integration","header_author":"The WordPress Team","header_description":"SQLite database driver drop-in. (based on SQLite Integration by Kojima Toshiyasu)","assets_banners_color":"","last_updated":"2026-10-08 14:58:16","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":4.6,"author_block_rating":0,"active_installs":5000,"downloads":829944,"num_ratings":12,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","faq","changelog"],"tags":{"2.1.13":{"tag":"2.1.13","author":"aristath","date":"2024-08-02 09:58:45","revision":3129943},"2.1.14":{"tag":"2.1.14","author":"aristath","date":"2024-08-14 15:53:26","revision":3135672},"2.1.15":{"tag":"2.1.15","author":"aristath","date":"2024-09-04 10:18:39","revision":3146372},"2.1.16":{"tag":"2.1.16","author":"janjakes","date":"2025-01-08 11:37:51","revision":3218964},"2.2.0":{"tag":"2.2.0","author":"janjakes","date":"2025-06-02 10:33:16","revision":3304828},"2.2.1":{"tag":"2.2.1","author":"janjakes","date":"2025-06-02 10:52:54","revision":3304858},"2.2.10":{"tag":"2.2.10","author":"janjakes","date":"2025-09-19 07:22:07","revision":3364367},"2.2.11":{"tag":"2.2.11","author":"janjakes","date":"2025-10-02 12:33:03","revision":3371779},"2.2.12":{"tag":"2.2.12","author":"janjakes","date":"2025-10-10 11:19:22","revision":3376191},"2.2.13":{"tag":"2.2.13","author":"janjakes","date":"2025-10-22 15:48:46","revision":3382743},"2.2.14":{"tag":"2.2.14","author":"janjakes","date":"2025-11-06 16:38:14","revision":3391292},"2.2.15":{"tag":"2.2.15","author":"janjakes","date":"2025-11-28 09:21:52","revision":3404965},"2.2.16":{"tag":"2.2.16","author":"janjakes","date":"2026-01-15 16:05:17","revision":3440510},"2.2.17":{"tag":"2.2.17","author":"janjakes","date":"2026-02-02 09:04:55","revision":3451878},"2.2.18":{"tag":"2.2.18","author":"janjakes","date":"2026-03-06 15:47:13","revision":3476534},"2.2.19":{"tag":"2.2.19","author":"janjakes","date":"2026-03-19 15:32:33","revision":3486626},"2.2.2":{"tag":"2.2.2","author":"janjakes","date":"2025-06-06 13:18:16","revision":3307538},"2.2.20":{"tag":"2.2.20","author":"janjakes","date":"2026-03-25 20:58:37","revision":3491244},"2.2.21":{"tag":"2.2.21","author":"janjakes","date":"2026-04-03 13:06:09","revision":3498254},"2.2.22":{"tag":"2.2.22","author":"janjakes","date":"2026-04-03 14:26:17","revision":3498308},"2.2.23":{"tag":"2.2.23","author":"janjakes","date":"2026-04-10 15:06:53","revision":3503394},"2.2.3":{"tag":"2.2.3","author":"janjakes","date":"2025-07-04 11:34:22","revision":3322285},"2.2.4":{"tag":"2.2.4","author":"janjakes","date":"2025-07-25 16:51:43","revision":3334261},"2.2.5":{"tag":"2.2.5","author":"janjakes","date":"2025-07-31 09:22:39","revision":3337099},"2.2.6":{"tag":"2.2.6","author":"janjakes","date":"2025-08-06 12:16:34","revision":3340352},"2.2.7":{"tag":"2.2.7","author":"janjakes","date":"2025-09-11 19:12:48","revision":3360121},"2.2.8":{"tag":"2.2.8","author":"janjakes","date":"2025-09-12 05:58:14","revision":3360275},"2.2.9":{"tag":"2.2.9","author":"janjakes","date":"2025-09-12 09:41:20","revision":3360421},"3.0.0":{"tag":"3.0.0","author":"janjakes","date":"2026-08-13 14:24:52","revision":3645573},"3.0.1":{"tag":"3.0.1","author":"janjakes","date":"2026-08-25 12:20:15","revision":3665294},"3.0.2":{"tag":"3.0.2","author":"janjakes","date":"2026-09-10 07:51:46","revision":3689504},"3.1.0":{"tag":"3.1.0","author":"janjakes","date":"2026-10-08 14:58:16","revision":3734902}},"upgrade_notice":{"3.0.0":"<p>Major release with an all-new SQLite driver. Requires SQLite 3.37.0 or newer. Back up your SQLite database before updating.<\/p>"},"ratings":{"1":1,"2":0,"3":0,"4":1,"5":10},"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.1.13","2.1.14","2.1.15","2.1.16","2.2.0","2.2.1","2.2.10","2.2.11","2.2.12","2.2.13","2.2.14","2.2.15","2.2.16","2.2.17","2.2.18","2.2.19","2.2.2","2.2.20","2.2.21","2.2.22","2.2.23","2.2.3","2.2.4","2.2.5","2.2.6","2.2.7","2.2.8","2.2.9","3.0.0","3.0.1","3.0.2","3.1.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[153,28201],"plugin_category":[54,59],"plugin_contributors":[78740,226274,182429,236628,77594,236629,221146],"plugin_business_model":[],"class_list":["post-168657","plugin","type-plugin","status-publish","hentry","plugin_tags-database","plugin_tags-sqlite","plugin_category-security-and-spam-protection","plugin_category-utilities-and-tools","plugin_contributors-aristath","plugin_contributors-berislavgrgicak","plugin_contributors-bpayton","plugin_contributors-janjakes","plugin_contributors-wordpressdotorg","plugin_contributors-zaerl","plugin_contributors-zieladam","plugin_committers-aristath","plugin_committers-berislavgrgicak","plugin_committers-bpayton","plugin_committers-githubsync","plugin_committers-janjakes","plugin_committers-wordpressdotorg","plugin_committers-zaerl","plugin_committers-zieladam"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/sqlite-database-integration.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Run WordPress on SQLite.<\/strong><\/p>\n\n<p>The SQLite plugin is a community, feature plugin. The intent is to allow testing an SQLite integration with WordPress and gather feedback, with the goal of eventually landing it in WordPress core.<\/p>\n\n<p>The plugin replaces the default MySQL database layer with an SQLite-backed implementation. WordPress continues to use its standard <code>wpdb<\/code> API while the plugin translates and emulates MySQL queries for SQLite.<\/p>\n\n<h4>What the plugin provides<\/h4>\n\n<ul>\n<li><strong>No database server.<\/strong> Your site's data is stored in a local SQLite database.<\/li>\n<li><strong>Guided setup.<\/strong> The installation screen checks for the required PHP extension, write access, and conflicting database drop-ins before enabling SQLite.<\/li>\n<li><strong>Purpose-built compatibility.<\/strong> A MySQL parser and emulation layer adapt MySQL syntax and behavior for SQLite.<\/li>\n<li><strong>Useful diagnostics.<\/strong> SQLite details appear in Site Health, and Query Monitor is supported.<\/li>\n<\/ul>\n\n<p><strong>Important:<\/strong> Enabling SQLite creates a separate, empty database; it does not migrate an existing site. If you enable it on a site that uses MySQL or MariaDB, WordPress will ask you to set up the site again. Disabling the plugin reconnects WordPress to the previous database with its data unchanged. Changes made while using SQLite are not transferred.<\/p>\n\n<p>The plugin requires the PDO SQLite PHP extension and SQLite 3.37.0 or newer.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20is%20the%20purpose%20of%20this%20plugin%3F\"><h3>What is the purpose of this plugin?<\/h3><\/dt>\n<dd><p>The primary purpose of the plugin is to test WordPress with SQLite and gather feedback, with the goal of eventually including the integration in WordPress core.<\/p>\n\n<p>Read the original proposal on the <a href=\"https:\/\/make.wordpress.org\/core\/2022\/09\/12\/lets-make-wordpress-officially-support-sqlite\/\">Make WordPress Core blog<\/a> and the <a href=\"https:\/\/make.wordpress.org\/core\/2022\/12\/20\/help-us-test-the-sqlite-implementation\/\">call for testing<\/a> for more context.<\/p><\/dd>\n<dt id=\"can%20i%20use%20this%20plugin%20on%20my%20production%20site%3F\"><h3>Can I use this plugin on my production site?<\/h3><\/dt>\n<dd><p>Yes, but keep reliable backups and make sure SQLite is a good fit for your site's traffic. SQLite supports concurrent reads but allows only one writer at a time, so MySQL or MariaDB may be a better fit for sites with heavy concurrent write traffic. Test your workload, themes, and plugins before switching.<\/p><\/dd>\n<dt id=\"will%20this%20plugin%20migrate%20my%20existing%20site%20to%20sqlite%3F\"><h3>Will this plugin migrate my existing site to SQLite?<\/h3><\/dt>\n<dd><p>No. Enabling SQLite starts a fresh WordPress installation in a separate database. Your existing MySQL or MariaDB database remains unchanged, but its content is not copied to SQLite.<\/p>\n\n<p>Disabling the plugin reconnects WordPress to the previous database. Content created while using SQLite is not transferred back.<\/p><\/dd>\n<dt id=\"where%20is%20the%20sqlite%20database%20stored%3F\"><h3>Where is the SQLite database stored?<\/h3><\/dt>\n<dd><p>By default, the SQLite database is stored in a <strong>randomized path<\/strong> under <code>WP_CONTENT_DIR . '\/database'<\/code>. The full path is recorded in <code>db-path.php<\/code> and exposed by the <code>DB_PATH<\/code> constant at runtime.<\/p>\n\n<p>For example:<\/p>\n\n<ol>\n<li>Database path: <code>WP_CONTENT_DIR . '\/database\/.ht.020a33c5d9e5407e8e93b43e55abf62e\/.ht.sqlite'<\/code><\/li>\n<li>Recorded in: <code>WP_CONTENT_DIR . '\/database\/db-path.php'<\/code> as <code>return __DIR__ . '\/...';<\/code><\/li>\n<li>Exposed by: <code>DB_PATH<\/code><\/li>\n<\/ol>\n\n<p>The random path makes the database location difficult to guess when it is not otherwise protected. We recommend setting <code>DB_PATH<\/code> to an <strong>explicit, protected path<\/strong> outside the web root that your web server does not expose.<\/p>\n\n<p>Integrations should always read <code>DB_PATH<\/code> after WordPress loads instead of assuming a fixed database path.<\/p><\/dd>\n<dt id=\"how%20can%20i%20configure%20the%20database%20location%3F\"><h3>How can I configure the database location?<\/h3><\/dt>\n<dd><p>To properly <strong>secure the SQLite database<\/strong>, define the <code>DB_PATH<\/code> constant to an <strong>explicit path<\/strong> that is protected from public web access. An explicit <code>DB_PATH<\/code> value is used as-is without randomization. Define it in <code>wp-config.php<\/code>:<\/p>\n\n<pre><code>\/\/ Use protected DB path that is not exposed by the web server.\ndefine( 'DB_PATH', '\/private\/wordpress\/database.sqlite' );\n<\/code><\/pre>\n\n<p><strong>Caution:<\/strong> An explicit <code>DB_PATH<\/code> must point to a <strong>protected<\/strong> location that your web server does not expose. Store the database outside the web root and make sure it's protected.<\/p>\n\n<p>The value of <code>DB_PATH<\/code> must be an absolute path to the SQLite database file, or <code>:memory:<\/code> for an in-memory SQLite database. The database directory must be writable by PHP. Changing <code>DB_PATH<\/code> selects a different database without moving an existing one.<\/p><\/dd>\n<dt id=\"what%20does%20the%20plugin%20require%3F\"><h3>What does the plugin require?<\/h3><\/dt>\n<dd><p>In addition to the WordPress and PHP versions listed above, the plugin requires the PDO SQLite PHP extension and SQLite 3.37.0 or newer. The setup screen also needs write access to the <code>wp-content<\/code> directory and will detect conflicting database drop-ins.<\/p><\/dd>\n<dt id=\"where%20can%20i%20submit%20my%20plugin%20feedback%3F\"><h3>Where can I submit my plugin feedback?<\/h3><\/dt>\n<dd><p>Feedback helps improve the integration. For troubleshooting, questions, suggestions, or feature requests, <a href=\"https:\/\/github.com\/wordpress\/sqlite-database-integration\/issues\/new\">open an issue in the SQLite GitHub repository<\/a>.<\/p><\/dd>\n<dt id=\"how%20can%20i%20contribute%20to%20the%20plugin%3F\"><h3>How can I contribute to the plugin?<\/h3><\/dt>\n<dd><p>Contributions are welcome through the <a href=\"https:\/\/github.com\/WordPress\/sqlite-database-integration\">SQLite Database Integration repository on GitHub<\/a>.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20change%20how%20wordpress%20queries%20are%20executed%3F\"><h3>Does this plugin change how WordPress queries are executed?<\/h3><\/dt>\n<dd><p>Yes. The plugin replaces the default MySQL-based database layer with an SQLite-backed implementation. WordPress continues to use the <code>wpdb<\/code> API, while queries are internally adapted to SQLite syntax and behavior.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>3.1.0<\/h4>\n\n<p><strong>SQLite Database Integration 3.1 is here! \ud83c\udf89<\/strong><\/p>\n\n<p>This release improves <strong>database storage and configuration<\/strong> and fixes several MySQL compatibility issues.<\/p>\n\n<p><strong>What's new<\/strong><\/p>\n\n<p>Version 3.1 improves how WordPress sites store, locate, and protect their SQLite databases. It also fixes SQL behavior and export compatibility:<\/p>\n\n<ul>\n<li><strong>Randomized database paths:<\/strong> The default database location is now a randomized directory under <code>wp-content\/database\/<\/code>, recorded in <code>wp-content\/database\/db-path.php<\/code>. (<a href=\"https:\/\/github.com\/WordPress\/sqlite-database-integration\/pull\/502\">#502<\/a>)<\/li>\n<li><strong><code>DB_PATH<\/code>:<\/strong> Configure the database with one full-path constant, also available at runtime for integrations. (<a href=\"https:\/\/github.com\/WordPress\/sqlite-database-integration\/pull\/512\">#512<\/a>)<\/li>\n<li><strong>SQL compatibility:<\/strong> Fix <code>IF()<\/code> condition evaluation and make <code>TRADITIONAL<\/code> enable its component SQL modes. (<a href=\"https:\/\/github.com\/WordPress\/sqlite-database-integration\/pull\/518\">#518<\/a>, <a href=\"https:\/\/github.com\/WordPress\/sqlite-database-integration\/pull\/509\">#509<\/a>)<\/li>\n<li><strong>WordPress table collations:<\/strong> Default to <code>utf8mb4_unicode_520_ci<\/code> for new tables created with WordPress's charset settings, improving exports to MariaDB. Existing tables keep their recorded collation. (<a href=\"https:\/\/github.com\/WordPress\/sqlite-database-integration\/pull\/514\">#514<\/a>)<\/li>\n<li><strong>Documentation:<\/strong> A new plugin README and expanded FAQ explain database storage and secure configuration. (<a href=\"https:\/\/github.com\/WordPress\/sqlite-database-integration\/pull\/520\">#520<\/a>)<\/li>\n<\/ul>\n\n<p>For more information about database paths and secure configuration, read the <a href=\"https:\/\/github.com\/WordPress\/sqlite-database-integration\/blob\/trunk\/packages\/plugin-sqlite-database-integration\/README.md#database-storage\">database storage guide<\/a>.<\/p>\n\n<p><strong>Upgrading to 3.1<\/strong><\/p>\n\n<p>Upgrading an existing SQLite site is straightforward:<\/p>\n\n<ol>\n<li><strong>Back up<\/strong> your SQLite database.<\/li>\n<li><strong>Update the plugin<\/strong> to version 3.1.<\/li>\n<\/ol>\n\n<p>Existing <code>.ht.sqlite<\/code> and <code>.ht.sqlite.php<\/code> databases move to the randomized layout automatically unless a database file path is explicitly configured.<\/p>\n\n<p>To properly <strong>secure the database<\/strong>, set <code>DB_PATH<\/code> in <code>wp-config.php<\/code> to an absolute file path outside the web root that your web server does not expose. Its directory must be writable by PHP. Changing <code>DB_PATH<\/code> does not move an existing database.<\/p>\n\n<p><strong>Breaking changes<\/strong><\/p>\n\n<p>Review these changes if you use custom database settings or integrations:<\/p>\n\n<ul>\n<li><strong>Database paths:<\/strong> Default database files now move to randomized paths under <code>wp-content\/database\/<\/code>. Explicitly configured file paths stay unchanged. Integrations, including backup and migration tools, must read <code>DB_PATH<\/code> after WordPress loads instead of assuming a fixed filename.<\/li>\n<li><strong>Legacy constants:<\/strong> <code>DB_DIR<\/code> and <code>DB_FILE<\/code> are now deprecated. They and the previously deprecated <code>FQDB<\/code> and <code>FQDBDIR<\/code> remain supported, but <code>DB_PATH<\/code> takes precedence. Conflicting values trigger warnings.<\/li>\n<li><strong>Absolute paths:<\/strong> Relative database file and directory paths are now rejected. <code>:memory:<\/code> remains available for in-memory databases.<\/li>\n<\/ul>\n\n<p><strong>Thank you<\/strong><\/p>\n\n<p>Thank you to everyone who contributed, tested, and helped update integrations.<\/p>\n\n<p><strong>Changes since 3.0.2:<\/strong> <a href=\"https:\/\/github.com\/WordPress\/sqlite-database-integration\/compare\/v3.0.2...v3.1.0\"><code>v3.0.2...v3.1.0<\/code><\/a><\/p>\n\n<h4>3.0.2<\/h4>\n\n<ul>\n<li>Fix schema reconstruction with native numeric results (<a href=\"https:\/\/github.com\/WordPress\/sqlite-database-integration\/pull\/506\">#506<\/a>)<\/li>\n<li>Fix lexer edge cases and string handling (<a href=\"https:\/\/github.com\/WordPress\/sqlite-database-integration\/pull\/505\">#505<\/a>)<\/li>\n<li>Preserve index prefix lengths and order in <code>SHOW CREATE TABLE<\/code> primary keys (<a href=\"https:\/\/github.com\/WordPress\/sqlite-database-integration\/pull\/500\">#500<\/a>)<\/li>\n<li>Align savepoint handling with MySQL semantics (<a href=\"https:\/\/github.com\/WordPress\/sqlite-database-integration\/pull\/496\">#496<\/a>)<\/li>\n<\/ul>\n\n<h4>3.0.1<\/h4>\n\n<ul>\n<li>Mark the plugin as compatible with WordPress 7.1 (<a href=\"https:\/\/github.com\/WordPress\/sqlite-database-integration\/pull\/497\">#497<\/a>)<\/li>\n<li>Fix fresh multisite database setup (<a href=\"https:\/\/github.com\/WordPress\/sqlite-database-integration\/pull\/492\">#492<\/a>)<\/li>\n<\/ul>\n\n<h4>3.0.0<\/h4>\n\n<p><strong>SQLite Database Integration 3 is here! \ud83c\udf89<\/strong><\/p>\n\n<p>This release introduces an <strong>all-new SQLite database driver for WordPress<\/strong>, rebuilt from the ground up. Its purpose-built MySQL lexer, parser, and emulation layer deliver broader compatibility, more accurate behavior, and a stronger foundation for future improvements.<\/p>\n\n<p>The 3.0 release spans nearly two years of work, featuring <a href=\"https:\/\/github.com\/WordPress\/sqlite-database-integration\/milestone\/3?closed=1\">160 pull requests<\/a> and 1,075 commits from 15 contributors.<\/p>\n\n<p><strong>What's new<\/strong><\/p>\n\n<p>The new driver advances SQLite support for WordPress, plugins, database tools, and other MySQL-based applications. These improvements include:<\/p>\n\n<ul>\n<li><strong>New SQL engine:<\/strong> The pure-PHP lexer and parser provide extensive coverage of the official MySQL grammar.<\/li>\n<li><strong>Broad query support:<\/strong> Complex joins, subqueries, CTEs, unions, and other advanced queries are now supported.<\/li>\n<li><strong>Schema emulation:<\/strong> WordPress and database tools can query emulated MySQL <code>INFORMATION_SCHEMA<\/code> tables.<\/li>\n<li><strong>Schema introspection:<\/strong> <code>SHOW<\/code> and <code>DESCRIBE<\/code> statements provide accurate MySQL-like metadata.<\/li>\n<li><strong>Improved data handling:<\/strong> Types, casts, defaults, auto-increment, values, and escaping better match MySQL.<\/li>\n<li><strong>Refined MySQL semantics:<\/strong> Better emulation of SQL modes, variables, functions, transactions, and errors.<\/li>\n<li><strong>Better concurrency:<\/strong> Write-ahead logging and fewer locks reduce blocking between readers and writers.<\/li>\n<li><strong>PDO API:<\/strong> The new driver implements the PDO MySQL API, supporting many MySQL-based tools and applications.<\/li>\n<li><strong>Extensive testing:<\/strong> Test suites cover parsing, translation, metadata, concurrency, PDO, and end-to-end workflows.<\/li>\n<\/ul>\n\n<p>For more information about the new driver and its architecture, read the <a href=\"https:\/\/make.wordpress.org\/playground\/2025\/06\/13\/introducing-a-new-sqlite-driver-for-wordpress\/\">driver announcement<\/a>.<\/p>\n\n<p><strong>Modular design<\/strong><\/p>\n\n<p>The project was redesigned as a set of focused packages, separating the core driver from its WordPress integration:<\/p>\n\n<ul>\n<li><a href=\"https:\/\/github.com\/WordPress\/sqlite-database-integration\/tree\/v3.0.0\/packages\/plugin-sqlite-database-integration\">SQLite Database Integration<\/a>: The <strong>WordPress plugin<\/strong> powered by MySQL on SQLite.<\/li>\n<li><a href=\"https:\/\/github.com\/WordPress\/sqlite-database-integration\/tree\/v3.0.0\/packages\/mysql-on-sqlite\">MySQL on SQLite<\/a>: A standalone <strong>PDO MySQL drop-in<\/strong> for running MySQL-based PHP applications on SQLite.<\/li>\n<li><a href=\"https:\/\/github.com\/WordPress\/sqlite-database-integration\/tree\/v3.0.0\/packages\/mysql-proxy\">MySQL proxy<\/a> (experimental): A <strong>MySQL wire protocol bridge<\/strong> to PDO-compatible drivers for clients outside PHP.<\/li>\n<\/ul>\n\n<p>This architecture opens the driver to new integrations, applications, and development tools beyond WordPress.<\/p>\n\n<p><strong>Upgrading to 3.0<\/strong><\/p>\n\n<p>Upgrading an existing SQLite site is straightforward:<\/p>\n\n<ol>\n<li><strong>Back up<\/strong> your SQLite database.<\/li>\n<li><strong>Update the plugin<\/strong> to version 3.0.<\/li>\n<\/ol>\n\n<p>On first connection, the new driver automatically initializes its metadata without changing your tables or content.<\/p>\n\n<p>If you used the new driver preview, you can now delete the <code>WP_SQLITE_AST_DRIVER<\/code> flag.<\/p>\n\n<p><strong>Breaking changes<\/strong><\/p>\n\n<p>Most WordPress sites need no changes. Review the following if you use a custom setup:<\/p>\n\n<ul>\n<li><strong>New driver:<\/strong>\n\n<ul>\n<li>The new driver is always used. The legacy driver was removed.<\/li>\n<li>The <code>WP_SQLITE_AST_DRIVER<\/code> feature flag was removed.<\/li>\n<\/ul><\/li>\n<li><strong>Updated SQLite version requirements:<\/strong>\n\n<ul>\n<li>SQLite <code>3.37.0<\/code> or newer is required.<\/li>\n<li>The <code>WP_SQLITE_UNSAFE_ENABLE_UNSUPPORTED_VERSIONS<\/code> opt-in enables limited SQLite <code>3.27.0<\/code>\u2013<code>3.36.x<\/code> support.<\/li>\n<\/ul><\/li>\n<li><strong><code>DB_NAME<\/code> is required:<\/strong>\n\n<ul>\n<li>It must be defined and non-empty.<\/li>\n<li>It is used dynamically, independently of the SQLite file name and stored metadata.<\/li>\n<\/ul><\/li>\n<li><strong>SQLite defaults have changed:<\/strong>\n\n<ul>\n<li>Journal mode now defaults to <a href=\"https:\/\/sqlite.org\/wal.html\"><code>WAL<\/code><\/a>. Account for <code>-wal<\/code> and <code>-shm<\/code> sidecar files.<\/li>\n<li>Synchronous mode now defaults to <a href=\"https:\/\/sqlite.org\/pragma.html#pragma_synchronous\"><code>NORMAL<\/code><\/a> in <code>WAL<\/code> mode.<\/li>\n<\/ul><\/li>\n<li><strong>Updated configuration constants:<\/strong>\n\n<ul>\n<li><code>DATABASE_ENGINE<\/code> was removed. Use <code>DB_ENGINE<\/code>.<\/li>\n<li><code>DATABASE_TYPE<\/code> is deprecated. Use <code>DB_ENGINE<\/code>.<\/li>\n<li><code>FQDBDIR<\/code> is deprecated. Use <code>DB_DIR<\/code>.<\/li>\n<li><code>FQDB<\/code> is deprecated. Use <code>DB_DIR<\/code> and <code>DB_FILE<\/code>.<\/li>\n<\/ul><\/li>\n<li><strong>Updated driver classes:<\/strong>\n\n<ul>\n<li><code>WP_SQLite_Driver<\/code> is deprecated. Use <code>WP_MySQL_On_SQLite<\/code>.<\/li>\n<li><code>WP_PDO_MySQL_On_SQLite<\/code> was replaced by <code>WP_MySQL_On_SQLite<\/code>.<\/li>\n<li><code>WP_SQLite_Driver_Exception<\/code> was replaced by <code>WP_MySQL_On_SQLite_Exception<\/code>.<\/li>\n<li><code>WP_PDO_Proxy_Statement<\/code> was replaced by <code>WP_MySQL_On_SQLite_Statement<\/code>.<\/li>\n<\/ul><\/li>\n<li><strong>Sunsetting <code>$GLOBALS['@pdo']<\/code>:<\/strong>\n\n<ul>\n<li>Injecting a PDO connection through <code>$GLOBALS['@pdo']<\/code> is no longer supported.<\/li>\n<li>Reading <code>$GLOBALS['@pdo']<\/code> is deprecated. Use <code>$wpdb-&gt;get_driver()-&gt;get_sqlite_pdo()<\/code>.<\/li>\n<\/ul><\/li>\n<li><strong>Renamed driver constructor options:<\/strong>\n\n<ul>\n<li><code>pdo<\/code> \u2192 <code>sqlite_pdo<\/code>.<\/li>\n<li><code>journal_mode<\/code> \u2192 <code>sqlite_journal_mode<\/code>.<\/li>\n<li><code>synchronous<\/code> \u2192 <code>sqlite_synchronous<\/code>.<\/li>\n<\/ul><\/li>\n<\/ul>\n\n<p><strong>Thank you<\/strong><\/p>\n\n<p>Thank you to everyone who helped build, test, review, and improve the new driver. Your work made this possible.<\/p>\n\n<p><strong>3.0 milestone:<\/strong> <a href=\"https:\/\/github.com\/WordPress\/sqlite-database-integration\/milestone\/3?closed=1\">160 pull requests<\/a><\/p>\n\n<p><strong>Changes since 2.2.23:<\/strong> <a href=\"https:\/\/github.com\/WordPress\/sqlite-database-integration\/compare\/v2.2.23...v3.0.0\"><code>v2.2.23...v3.0.0<\/code><\/a><\/p>\n\n<h4>2.2.23<\/h4>\n\n<ul>\n<li>Add Query Monitor 4.0 support (<a href=\"https:\/\/github.com\/WordPress\/sqlite-database-integration\/pull\/357\">#357<\/a>)<\/li>\n<li>Translate MySQL CONVERT() expressions to SQLite (<a href=\"https:\/\/github.com\/WordPress\/sqlite-database-integration\/pull\/356\">#356<\/a>)<\/li>\n<\/ul>\n\n<h4>2.2.22<\/h4>\n\n<ul>\n<li>Support INSERT without INTO keyword (<a href=\"https:\/\/github.com\/WordPress\/sqlite-database-integration\/pull\/354\">#354<\/a>)<\/li>\n<li>Add tests for MySQL row-level locking clauses (<a href=\"https:\/\/github.com\/WordPress\/sqlite-database-integration\/pull\/342\">#342<\/a>)<\/li>\n<li>Improve automated deploy setup.<\/li>\n<\/ul>\n\n<h4>2.2.21<\/h4>\n\n<ul>\n<li>Monorepo setup + release automation (<a href=\"https:\/\/github.com\/WordPress\/sqlite-database-integration\/pull\/334\">#334<\/a>)<\/li>\n<li>Rework release workflow (<a href=\"https:\/\/github.com\/WordPress\/sqlite-database-integration\/pull\/350\">#350<\/a>)<\/li>\n<li>Fix incorrect PHP polyfill implementations (<a href=\"https:\/\/github.com\/WordPress\/sqlite-database-integration\/pull\/338\">#338<\/a>)<\/li>\n<\/ul>","raw_excerpt":"Run WordPress on SQLite.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bn-in.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/168657","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bn-in.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/bn-in.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"author":[{"embeddable":true,"href":"https:\/\/bn-in.wordpress.org\/plugins\/wp-json\/wp\/v2\/users\/5911429"}],"replies":[{"embeddable":true,"href":"https:\/\/bn-in.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=168657"}],"wp:attachment":[{"href":"https:\/\/bn-in.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=168657"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/bn-in.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=168657"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/bn-in.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=168657"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/bn-in.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=168657"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/bn-in.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=168657"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/bn-in.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=168657"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}