接続URL
Prisma ORMはデータベースに接続するために接続URLを必要とします。例えば、Prismaクライアントでクエリを送信したり、Prisma Migrateでデータベーススキーマを変更したりする際に必要です。
接続URLは、Prismaスキーマのdatasource
ブロックのurl
フィールドを介して提供されます。これは通常、次のコンポーネントで構成されます(SQLiteおよびPrisma Postgresを除く)。
- ユーザー: データベースユーザーの名前
- パスワード: データベースユーザーのパスワード
- ホスト: データベースサーバーが動作しているマシンのIPアドレスまたはドメイン名
- ポート: データベースサーバーが動作しているポート
- データベース名: 使用したいデータベースの名前
Prisma ORMを始める前に、この情報を手元に用意しておいてください。まだデータベースサーバーを稼働させていない場合は、ローカルのSQLiteデータベースファイル(クイックスタートを参照)を使用するか、Prisma Postgresで無料のPostgreSQLデータベースをセットアップできます。
フォーマット
接続URLのフォーマットは、使用しているデータベースコネクタによって異なります。Prisma ORMは通常、各データベースの標準フォーマットをサポートしています。使用しているデータベースの接続URLの詳細については、各ドキュメントページで確認できます。
特殊文字
MySQL、PostgreSQL、CockroachDBでは、接続URLのあらゆる部分(パスワードを含む)で特殊文字をパーセントエンコードする必要があります。例えば、p@$$w0rd
はp%40%24%24w0rd
になります。
Microsoft SQL Serverでは、接続文字列のあらゆる部分で特殊文字をエスケープする必要があります。
例
Prisma ORMがサポートするデータベースの接続URLの例を以下に示します。
Prisma Postgres
Prisma Postgresは、ユニカーネル上で動作するマネージドPostgreSQLサービスです。Prisma Postgresに接続するにはいくつかの方法があります。
- 直接TCP接続経由(任意のORMまたはデータベースツールで接続可能)
- Prisma Accelerate経由(Prisma ORMのみでサポート)
- ローカルで
これらの接続文字列フォーマットについては、以下で説明します。
直接TCP
直接TCP経由でPrisma Postgresに接続する場合、接続文字列は以下のようになります。
DATABASE_URL="postgres://USER:PASSWORD@postgres.prisma-data.net:5432/?sslmode=require"
USER
とPASSWORD
の値は、Prisma Postgresインスタンスの認証情報を生成する際に提供されます。以下にサンプル値の例を示します。サンプル値を使った例です。
DATABASE_URL="postgres://2f9881cc7eef46f094ac913df34c1fb441502fe66cbe28cc48998d4e6b20336b:sk_QZ3u8fMPFfBzOID4ol-mV@postgres.prisma-data.net:5432/?sslmode=require"
Prisma Accelerate経由 (HTTP)
Prisma Accelerate経由で接続する場合、従来の接続文字列のようにユーザー名/パスワードは必要ありません。代わりに、認証はAPIキーを介して行われます。
datasource db {
provider = "postgresql"
url = "prisma+postgres://accelerate.prisma-data.net/?api_key=API_KEY"
}
このスニペットのAPI_KEY
は、新しいPrisma Postgresインスタンスをセットアップする際に受け取るAPIキーのプレースホルダーです。Prisma Postgresへの実際の接続URLがどのように見えるかの例を以下に示します。Prisma Postgresへの実際の接続URLがどのようなものになるかを示す例です。
datasource db {
provider = "postgresql"
url = "prisma+postgres://accelerate.prisma-data.net/?api_key=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcGlfa2V5IjoiMGNkZTFlMjQtNzhiYi00NTY4LTkyM2EtNWUwOTEzZWUyNjU1IiwidGVuYW50X2lkIjoiNzEyZWRlZTc1Y2U2MDk2ZjI4NDg3YjE4NWMyYzA2OTNhNGMxNzJkMjhhOWFlNGUwZTYxNWE4NWIxZWY1YjBkMCIsImludGVybmFsX3NlY3JldCI6IjA4MzQ2Y2RlLWI5ZjktNDQ4Yy04NThmLTMxNjg4ODEzNmEzZCJ9.N1Za6q6NfInzHvRkud6Ojt_-RFg18a0601vdYWGKOrk"
}
ローカルPrisma Postgres
ローカルPrisma Postgresインスタンスへの接続文字列は、Accelerate経由のリモートインスタンスの構造を反映しています。
datasource db {
provider = "postgresql"
url = "prisma+postgres://accelerate.prisma-data.net/?api_key=API_KEY"
}
ただし、この場合、API_KEY
は認証情報を提供しません。代わりに、ローカルのPrisma Postgresインスタンスに関する情報をエンコードします。prisma dev
コマンドを介して、ローカル接続文字列を取得できます。
PostgreSQL
datasource db {
provider = "postgresql"
url = "postgresql://janedoe:mypassword@localhost:5432/mydb?schema=sample"
}
MySQL
datasource db {
provider = "mysql"
url = "mysql://janedoe:mypassword@localhost:3306/mydb"
}
Microsoft SQL Server
datasource db {
provider = "sqlserver"
url = "sqlserver://:1433;initial catalog=sample;user=sa;password=mypassword;"
}
SQLite
datasource db {
provider = "sqlite"
url = "file:./dev.db"
}
CockroachDB
datasource db {
provider = "cockroachdb"
url = "postgresql://janedoe:mypassword@localhost:26257/mydb?schema=public"
}
MongoDB
datasource db {
provider = "mongodb"
url = "mongodb+srv://root:<password>@cluster0.ab1cd.mongodb.net/myDatabase?retryWrites=true&w=majority"
}
.env
接続URLを環境変数として提供することもできます。
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
その場合、ターミナルで環境変数を設定するか、.env
という名前のdotenvファイルを提供することで行えます。これはPrisma CLIによって自動的に認識されます。
Prisma ORMは、次の状況でdotenvファイルから接続URLを読み取ります。
- ビルド時にスキーマを更新する場合
- 実行時にデータベースに接続する場合
DATABASE_URL=postgresql://janedoe:mypassword@localhost:5432/mydb