10分でできる!Laravelでsqliteデータベースに接続

2021年9月29日

環境

  • PC(OS): chromebook (debian)
  • laravel: 8.44.0
  • データベース: sqlite 3

前提条件

laravelインストール直後の状態から始めます。chromebookのlinuxにはデフォルトでsqlite3が入ってませんので、sqlite3のインストールも合わせて説明します。

sqliteデータベースを作成する

まずはsqliteのデータベースファイルを作成します。sqliteはプロジェクト内にデータベースファイルを埋め込みます。デフォルトではdatabaseフォルダ以下にdatabase.sqliteという名前で接続する設定になっているので、空のファイルを作成します。

touch database/database.sqlite

sqliteのインストール

データベースの中身を確認するために、cliのコマンドをインストールしておきます。

sudo apt-get install sqlite3

laravelからsqliteを操作するために、phpの拡張モジュールをインストールしておきます。コマンドはapt-get install php[phpのバージョン]-sqlite3です。私の環境は7.3なので以下のコマンドとなります。バージョンはご自身の環境に応じて書き換えてください。

sudo apt-get install php7.3-sqlite3

次にインストールした拡張モジュールを有効化するために、php.iniを編集します。php.iniの場所がわからない方は以下のコマンドで確認します。多くの結果が出力されるかもしれませんが、Loaded Configuration Fileで始まる行がphp.iniのパスです。

php --ini

Configuration File (php.ini) Path: /etc/php/7.3/cli
Loaded Configuration File:         /etc/php/7.3/cli/php.ini

vimで開きます。

vim /etc/php/7.3/cli/php.ini

以下の行がコメントアウトされている場合は、コメントを外します。

extension=pdo_sqlite

Laravel からsqlite3への接続設定

Laravelのデータベース接続設定ファイルの該当箇所を見てみましょう。ファイルはconfig/database.phpです。

        'sqlite' => [
            'driver' => 'sqlite',
            'url' => env('DATABASE_URL'),
            'database' => env('DB_DATABASE', database_path('database.sqlite')),
            'prefix' => '',
            'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
        ],

sqliteで始まるブロック内が接続先となります。’database’項目が接続先のファイルパスです。デフォルトではdatabase/database.sqliteファイルに接続します。今回はこの設定に合わせてデータベースファイルを作成しましたので、このファイルを編集する必要はありません。(異なるデータベース名をつけた場合は、このファイルのファイルパス部分を編集してください。

次に.envの設定を行います。初期設定では以下のようにmysqlに接続する設定になっていますので、sqliteの設定に変更します。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

DB_CONNECTIONだけ残し、それより後ろの行は削除します。DB_CONNECTIONの値はsqliteに変更します。変更後は以下の通りです。

DB_CONNECTION=sqlite

以上でLaravelからsqliteを使用する設定がすべて完了しました。

Laravelからテーブルを作成してみる

ではLaravelからSqliteを操作できるか確認してみましょう。インストール時に作られるマイグレーションを実行してみます。マイグレーションが無事に終わればsqliteとの接続完了です。

php artisan migrate

Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated:  2014_10_12_000000_create_users_table (102.96ms)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table (106.97ms)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated:  2019_08_19_000000_create_failed_jobs_table (89.78ms)

作成したテーブルが本当にできているか、sqlite3コマンドで確認してみましょう。sqlite3コマンドでファイルをしていして対話コンソールを開きます。.tablesコマンドでテーブルの一覧を表示してみます。以下のような結果が表示されれば完了です。

sqlite3 database/database.sqlite
sqlite> .tables

failed_jobs      migrations       password_resets  users 

Laravel

Posted by kobainmac