MeWrite Docs

Laravel 11: SQLite driver missing

Laravel 11インストール後にSQLiteドライバが見つからないエラー

概要

Laravel 11をインストールした後、デフォルトのデータベース設定がSQLiteになっているため、SQLiteドライバが見つからないというエラーが発生します。Laravel 11からデフォルトのデータベースがSQLiteに変更されました。

エラーメッセージ

Illuminate\Database\QueryException
could not find driver (Connection: sqlite, SQL: ...)
PDOException: could not find driver
Database file at path [database/database.sqlite] does not exist.

原因

  1. Laravel 11の仕様変更: デフォルトDBがMySQLからSQLiteに変更された
  2. PHPのSQLite拡張が未インストール: pdo_sqlite拡張がない
  3. SQLiteファイルが存在しない: database/database.sqliteが作成されていない
  4. .envファイルの設定: DB_CONNECTIONが明示的に設定されていない

解決策

1. SQLiteを使用する場合

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# PHPのSQLite拡張をインストール

# Ubuntu/Debian
sudo apt install php8.2-sqlite3

# CentOS/RHEL
sudo yum install php-pdo_sqlite

# macOS (Homebrew)
# 通常はデフォルトでインストール済み
php -m | grep sqlite
1
2
3
4
5
# SQLiteファイルを作成
touch database/database.sqlite

# マイグレーション実行
php artisan migrate

2. MySQLに変更する場合(推奨)

1
2
3
4
5
6
7
# .envファイルを編集
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
1
2
3
4
5
// config/database.php で確認
'default' => env('DB_CONNECTION', 'sqlite'),  // Laravel 11のデフォルト

// 明示的に指定する場合
'default' => env('DB_CONNECTION', 'mysql'),

3. PostgreSQLに変更する場合

1
2
3
4
5
6
7
# .env
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=laravel
DB_USERNAME=postgres
DB_PASSWORD=

4. .envファイルがない場合

1
2
3
4
5
6
7
# .env.exampleからコピー
cp .env.example .env

# アプリケーションキー生成
php artisan key:generate

# .envを編集してDB設定を行う

5. Laravel Sailを使用する場合

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# Sailでは自動的にMySQLが設定される
./vendor/bin/sail up -d

# .envは自動的に設定される
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=sail
DB_PASSWORD=password

6. SQLite拡張の確認

1
2
3
4
5
6
7
8
9
# インストール済み拡張を確認
php -m | grep -i sqlite

# 出力例
pdo_sqlite
sqlite3

# phpinfoで確認
php -i | grep -i sqlite

7. PHP設定ファイルで有効化

1
2
3
; php.ini
extension=pdo_sqlite
extension=sqlite3
1
2
3
4
5
6
7
8
# PHP設定ファイルの場所を確認
php --ini

# 設定を反映(Webサーバー再起動)
sudo systemctl restart php8.2-fpm
sudo systemctl restart apache2
# または
sudo systemctl restart nginx

8. Dockerでの対応

1
2
3
4
5
6
7
8
# Dockerfile
FROM php:8.2-fpm

# SQLite拡張をインストール
RUN docker-php-ext-install pdo_sqlite

# または MySQL
RUN docker-php-ext-install pdo_mysql
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# docker-compose.yml(MySQL使用)
services:
  app:
    build: .
    volumes:
      - .:/var/www/html
    depends_on:
      - mysql

  mysql:
    image: mysql:8.0
    environment:
      MYSQL_DATABASE: laravel
      MYSQL_ROOT_PASSWORD: password
    volumes:
      - mysql_data:/var/lib/mysql

volumes:
  mysql_data:

9. テスト用にSQLiteを使用

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
// phpunit.xml
<env name="DB_CONNECTION" value="sqlite"/>
<env name="DB_DATABASE" value=":memory:"/>

// config/database.php
'testing' => [
    'driver' => 'sqlite',
    'database' => ':memory:',
    'prefix' => '',
],

10. 新規プロジェクト作成時の対応

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# Laravel 11の新規プロジェクト作成
laravel new myproject

# プロンプトでデータベースを選択
# Which database will your application use?
# [mysql] MySQL
# [pgsql] PostgreSQL
# [sqlite] SQLite
# [sqlsrv] SQL Server

# MySQLを選択すると自動的に設定される

11. Laravel Installerのアップデート

1
2
3
4
5
# 最新のLaravel Installerに更新
composer global update laravel/installer

# バージョン確認
laravel --version

よくある間違い

  • Laravel 11でデフォルトがSQLiteに変わったことを知らない
  • .envファイルのDB_CONNECTIONを確認せずにmigrate実行
  • PHPのSQLite拡張をインストールせずにSQLiteを使おうとする
  • database/database.sqliteファイルを作成し忘れる

Laravel 11の変更点

項目Laravel 10Laravel 11
デフォルトDBMySQLSQLite
.envファイル詳細な設定最小限の設定
設定ファイルconfig/に配置一部は.envのみ

関連エラー

参考リンク

Laravel の他のエラー

最終更新: 2025-12-14