diff --git a/app/ServiceProvider/DatabaseProvider.php b/app/ServiceProvider/DatabaseProvider.php index 0a223f75a..dfa5e06db 100644 --- a/app/ServiceProvider/DatabaseProvider.php +++ b/app/ServiceProvider/DatabaseProvider.php @@ -117,10 +117,11 @@ class DatabaseProvider implements ServiceProviderInterface { require_once __DIR__.'/../Schema/Sqlite.php'; - return new Database(array( + return new Database([ 'driver' => 'sqlite', 'filename' => DB_FILENAME, - )); + 'wal_mode' => DB_WAL_MODE, + ]); } /** diff --git a/app/constants.php b/app/constants.php index 3fc1d329d..5c7ce3360 100644 --- a/app/constants.php +++ b/app/constants.php @@ -43,6 +43,7 @@ defined('DB_DRIVER') or define('DB_DRIVER', getenv('DB_DRIVER') ?: 'sqlite'); // Sqlite configuration defined('DB_FILENAME') or define('DB_FILENAME', getenv('DB_FILENAME') ?: DATA_DIR.DIRECTORY_SEPARATOR.'db.sqlite'); +defined('DB_WAL_MODE') or define('DB_WAL_MODE', getenv('DB_WAL_MODE') ? strtolower(getenv('DB_WAL_MODE')) === 'true' : true); // Mysql/Postgres configuration defined('DB_USERNAME') or define('DB_USERNAME', getenv('DB_USERNAME') ?: 'root'); diff --git a/libs/picodb/lib/PicoDb/Driver/Sqlite.php b/libs/picodb/lib/PicoDb/Driver/Sqlite.php index 0503d336b..2dd17698d 100644 --- a/libs/picodb/lib/PicoDb/Driver/Sqlite.php +++ b/libs/picodb/lib/PicoDb/Driver/Sqlite.php @@ -36,6 +36,12 @@ class Sqlite extends Base } $this->pdo = new PDO('sqlite:'.$settings['filename'], null, null, $options); + + // Official docs: https://sqlite.org/wal.html + if (isset($settings['wal_mode']) && $settings['wal_mode'] === true) { + $this->pdo->exec('PRAGMA journal_mode=wal'); + } + $this->enableForeignKeys(); }