could not find driver (Connection: sqlite, SQL: PRAGMA foreign_keys = ON

Stefan Bogdanescu

Founder & Senior Architect · 2026-06-29

Laravel Company

Decoding the Dreaded Error: "could not find driver" in Laravel Database Connections

As a senior developer working with the Laravel ecosystem, we frequently encounter errors that seem cryptic at first glance but represent fundamental mismatches between our application code and the underlying operating system environment. One of the most frustrating errors developers face is could not find driver when attempting to establish a database connection, especially when dealing with SQLite in Laravel.

This post will dive deep into what this error means, why it occurs in a modern PHP/Laravel setup, and provide a step-by-step guide to resolving it so you can get your application running smoothly.


Understanding the "could not find driver" Error

The stack trace you provided points directly to a failure within PHP's Data Objects (PDO) layer:

php
Illuminate\Database\QueryException
could not find driver (Connection: sqlite, SQL: PRAGMA foreign_keys = ON;)

When Laravel attempts to connect to the database using PDO (PHP Data Objects), it relies on specific extensions—called drivers—to know how to communicate with that specific type of database (e.g., MySQL, PostgreSQL, SQLite).

The error could not find driver means that the PHP installation, or specifically the PHP module being used by your web server (like Apache or Nginx), does not have the necessary PDO driver installed or enabled for the requested connection type—in this case, the sqlite driver.

This is fundamentally an environment configuration issue, not typically a bug in your Laravel Eloquent code or database migration syntax.

The Root Cause: Missing PHP Extensions

For SQLite operations to work within a PHP application, the underlying PHP installation must have the PDO SQLite extension compiled and enabled. If this extension is missing, the PDO layer cannot initiate the connection handshake with the SQLite file system.

This issue frequently arises in several scenarios:

  1. Custom/Minimal PHP Builds: When installing PHP from source or using minimal Docker images, essential extensions might be omitted by default for size optimization.
  2. Incorrect Installation/Configuration: The extension exists on the system but is not loaded when PHP starts (i.e., it's not enabled in php.ini).
  3. Missing Package: The required package for the SQLite driver was never installed via the system package manager.

Step-by-Step Solution Guide

Resolving this involves checking and fixing the environment where your Laravel application is running, rather than modifying the Laravel code itself.

1. Check Your php.ini Configuration

The most crucial step is examining your PHP configuration file. You need to ensure that the PDO SQLite driver is explicitly enabled.

Locate your active php.ini file and search for the line related to extensions. You must uncomment or add the following line:

ini
extension=pdo_sqlite

After making any changes to php.ini, you must restart your web server (e.g., Apache, Nginx) or PHP-FPM service for the changes to take effect.

2. Verify Driver Installation (Linux/macOS)

If changing php.ini doesn't work, the driver might be missing entirely from your system packages. Use your distribution’s package manager to install the necessary extension:

For Debian/Ubuntu systems:

bash
sudo apt update
sudo apt install php-sqlite3
# Or sometimes you need to ensure the main PHP package includes it:
sudo apt install php-pdo-sqlite

For systems using PECL (PHP Extension Community Library):
If you are managing extensions manually, use PECL to install and enable the driver:

bash
pecl install pdo_sqlite
# Then ensure the extension is loaded by adding it to your php.ini

3. Verify within Laravel Context

Once you have confirmed that the PHP environment can successfully load the pdo_sqlite driver, your Laravel application will be able to establish connections without issue. Remember, building robust applications, as championed by frameworks like Laravel, requires a solid foundation in the underlying technology stack. For more advanced knowledge on structuring and securing modern web applications, always refer to resources from laravelcompany.com.

Conclusion

The could not find driver error is a classic symptom of an environmental setup issue rather than an application logic flaw. By systematically checking your PHP extensions and ensuring the correct PDO drivers are enabled in your system configuration, you can bypass this roadblock. Focus on the environment first; once the underlying database drivers are correctly loaded, Laravel's powerful database abstraction layer will connect seamlessly, allowing you to focus on building amazing features for your users.