https://github.com/lucianofedericopereira/mysqlite
Drop-in local development replacement for MySQL
What it does
Listens on port 3306 (or any port) and speaks the MySQL client/server protocol Translates MySQL SQL to SQLite SQL on the fly Stores everything in a .sqlite file — no daemon, no service, no Docker Tested with WordPress (full install + wp-admin working)
mysqlite translates MySQL-specific syntax to SQLite on the fly: MySQL SQLite ENGINE=InnoDB, CHARSET=utf8mb4 stripped ON DUPLICATE KEY UPDATE ON CONFLICT DO UPDATE SET INSERT IGNORE INSERT OR IGNORE TRUNCATE TABLE t DELETE FROM t DATE_ADD(d, INTERVAL n unit) datetime(d, '+n unit') IF(cond, a, b) CASE WHEN cond THEN a ELSE b END CONVERT(x USING utf8) x FOR UPDATE, LOCK IN SHARE MODE stripped CREATE FULLTEXT INDEX FTS5 virtual table + sync triggers MySQL string escapes (', n, \) SQLite-compatible form LIKE '\_prefix%' LIKE '_prefix%'
Supported SHOW commands
SHOW TABLES, SHOW FULL TABLES, SHOW COLUMNS, SHOW INDEX, SHOW VARIABLES, SHOW CREATE TABLE, SHOW CREATE VIEW, SHOW TABLE STATUS, SHOW DATABASES, SHOW COLLATION, SHOW CHARSET, SHOW ENGINES, SHOW GRANTS, SHOW PROCESSLIST, SHOW TRIGGERS, SHOW WARNINGS, SHOW PROCEDURE STATUS INFORMATION_SCHEMA
Virtual handlers for TABLES, COLUMNS, STATISTICS, SCHEMATA, VIEWS, ROUTINES, TABLE_CONSTRAINTS, TRIGGERS, REFERENTIAL_CONSTRAINTS, KEY_COLUMN_USAGE Custom functions
DATE_FORMAT, SUBSTRING_INDEX, FIND_IN_SET, FIELD, FROM_UNIXTIME, UNIX_TIMESTAMP, DATEDIFF, LPAD, RPAD, MD5, REPEAT, STRCMP, TIMESTAMPDIFF, CONVERT_TZ, VERSION, DATABASE, USER, CURRENT_USER, CONNECTION_ID, ROW_COUNT, LAST_INSERT_ID, JSON_UNQUOTE, JSON_CONTAINS, JSON_CONTAINS_PATH, JSON_DEPTH, JSON_LENGTH, JSON_MERGE_PATCH, JSON_MERGE, JSON_KEYS, REGEXP, REGEXP_LIKE
Protocol features
Export and import
SQLite ↔ SQL file
Dump the database to a SQL file ./mysqlite export --to dump.sql --db data.sqlite
Restore (or populate) a database from a SQL file Accepts both mysqlite dumps and standard MySQL dumps ./mysqlite import --from dump.sql --db data.sqlite
SQLite ↔ real MySQL
Requires recompiling with -d:withMysql:
nimble build -d:withMysql
Copy SQLite database to MySQL ./mysqlite export --to mysql://user:pass@localhost/mydb --db data.sqlite
Copy MySQL database into SQLite ./mysqlite import --from mysql://user:pass@localhost/mydb --db data.sqlite