SQLite接続文字列とファイルパス

SQLite接続文字列とファイルパス形式の解説。相対パス、絶対パス、インメモリデータベース、Prismaのfile: URI形式を解説します。

Best Practices

詳細な説明

SQLite接続文字列

SQLiteはクライアント・サーバー型データベースとは異なり、ディスク上のファイルに直接読み書きします。「接続文字列」は単純にファイルパスで、オプションでfile:プレフィックスを付けます。

ファイルパス形式

相対パス(アプリケーションの作業ディレクトリからの相対):

./database.sqlite
file:./database.sqlite

絶対パス:

/var/lib/myapp/database.sqlite
file:///var/lib/myapp/database.sqlite

Windows絶対パス:

C:\Users\dev\myapp\database.sqlite
file:///C:/Users/dev/myapp/database.sqlite

インメモリデータベース

テストや一時データの場合、SQLiteは完全にメモリ内で実行できます:

:memory:
file::memory:

インメモリデータベースは接続の有効期間中のみ存在します。閉じるとすべてのデータが失われます。ユニットテストに最適です。

Prisma設定

PrismaはSQLiteにfile:プレフィックスを使用します:

datasource db {
  provider = "sqlite"
  url      = "file:./dev.db"
}

または環境変数経由:

DATABASE_URL="file:./dev.db"

URIパラメータ

file: URIはクエリパラメータをサポートしています:

パラメータ 目的
mode=ro 読み取り専用で開く
mode=rw 読み書き可能(作成なし)
mode=rwc 読み書き、存在しない場合は作成(デフォルト)
mode=memory インメモリデータベース
cache=shared 共有キャッシュモード

パラメータ付きの例:

file:./app.db?mode=rwc&cache=shared

ファイル拡張子

一般的なSQLiteファイル拡張子には.sqlite.sqlite3.db.s3dbがあります。拡張子は純粋に慣例的なもので、SQLiteは特定の拡張子を強制しません。

ユースケース

開発環境でのローカルSQLiteデータベースの設定、モバイルアプリケーション、組み込みシステム、またはCI/CDパイプラインでの軽量テストデータベースとして。

試してみる — Connection String Builder

フルツールを開く