[Lumen] DBをSQLiteに変更する方法



Nプログラマです。

Laravel製のマイクロフレームワークLumenで、データベースをSQLiteに設定する方法を備忘録として残しておきます。

概要

目標

Lumenで使うDBをSQLiteにする。

前提条件

  • PHP: インストール済み
  • Composer: インストール済み
  • Lumen Installer: インストール済み
  • プロジェクト: 作成済み(ディレクトリ名sample)

上記のとおりLumenコマンドでのプロジェクト作成の直後、という想定です。
時間があればインストールの記事も書いてみたいと思います。

検証環境

アプリ名 version
Mac OSX 10.13.6
PHP 7.2.12
Lumen Installer 1.02
Lumen 5.7.7

データベースファイル(sqlite)を作成

まずsqliteのデータベースを作成します。

エディタやコマンドを使い、空ファイルを作成しましょう。
今回はtouchコマンドを使います。

# sampleディレクトリに移動して、空ファイルを作成
touch ./database/sample.sqlite
ファイルの場所について

公開ディレクトリのみ使えるレンタルサーバなどの場合は、.htaccessなどで直接ファイルにアクセスできないような設定が必要です。

.envファイルを作成(コピー)

sampleディレクトリ直下に、.env.exampleがあるので、それを.envにリネームしてコピーします。

# 設定ファイルをリネームしてコピー
cd .env.example .env

参考

使用するデータベースをSQLiteに変更

.envファイルを開いて、DB_という接頭辞がついたところを変更してきます。

他のDB_CONNECTIONとDB_DATABASE以外は使わないので、削除かコメントアウトします。
今回は削除する方法でやります。

変更前 (.envファイル)

# ここより上は他の設定があります

DB_CONNECTION=mysql # ここをsqliteに変更します
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead # 先程作成したsample.sqliteの絶対パスを指定します
DB_USERNAME=homestead
DB_PASSWORD=secret

# ここより下は他の設定があります

変更後 (.envファイル)

# ここより上は他の設定があります

DB_CONNECTION=sqlite
DB_DATABASE=/sampleまでのフルパス/database/sample.sqlite # 作成したsqliteのファイルを指定

# ここより下は他の設定があります

接続テスト

データベースに接続するために、sqlite3コマンドを使います。
(IDEを使っている場合は、接続の機能が準備されていることがあるのでそちらを使ってもいいと思います)

# sample.sqliteデータベースへ接続
sqlite3 database/sample.sqlite

# DB接続を切断
.exit

無事接続できたのでここで終わりなのですが、せっかくここまできたので、migrateコマンドでテーブルを作成するところもやってみます。

migrateするファイルを追加

テーブルを追加するためusersというmigrationファイルを作成します。

php artisan make:migration create_users_table # usersのmigrationファイルを作成

参考

lumenからlaravelのドキュメントへリンクがあるので、laravelのドキュメントを参考にして、usersのmigrationファイルを作りました。

migrateを実行

migrationファイルを追加したので、migrateコマンドを実行します。
artisanコマンドを実行するため、プロジェクトの直下に移動することを忘れずに。。。

php artisan migrate

作成されたテーブルを確認

実際に追加したテーブル(users)が作成されているかを確認します。

# sample.sqliteデータベースへ接続
sqlite3 database/sample.sqlite

# テーブル一覧を確認
.table

# usersテーブルのスキーマを確認
.schema users

# レコードが空なので何も表示されない
select * from users;

# DB接続を切断
.exit

データベースにusersテーブルが追加されていますね。
これで終了です。お疲れ様でした。

終わりに

今回は、Lumenで使用するDBをSQLiteに変更しました。

SQLiteへ変更後、migraiton実行でDBに接続して書き込めるところも確認しました。

MySQLを使うことができないレンタルサーバなどで使えそうです。

それでは、このへんで。
バイナリー!