メインコンテンツへスキップ

接続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@$$w0rdp%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"

USERPASSWORDの値は、Prisma Postgresインスタンスの認証情報を生成する際に提供されます。以下にサンプル値の例を示します。サンプル値を使った例です。

DATABASE_URL="postgres://2f9881cc7eef46f094ac913df34c1fb441502fe66cbe28cc48998d4e6b20336b:sk_QZ3u8fMPFfBzOID4ol-mV@postgres.prisma-data.net:5432/?sslmode=require"

Prisma Accelerate経由 (HTTP)

Prisma Accelerate経由で接続する場合、従来の接続文字列のようにユーザー名/パスワードは必要ありません。代わりに、認証はAPIキーを介して行われます。

schema.prisma
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がどのようなものになるかを示す例です。

schema.prisma
datasource db {
provider = "postgresql"
url = "prisma+postgres://accelerate.prisma-data.net/?api_key=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcGlfa2V5IjoiMGNkZTFlMjQtNzhiYi00NTY4LTkyM2EtNWUwOTEzZWUyNjU1IiwidGVuYW50X2lkIjoiNzEyZWRlZTc1Y2U2MDk2ZjI4NDg3YjE4NWMyYzA2OTNhNGMxNzJkMjhhOWFlNGUwZTYxNWE4NWIxZWY1YjBkMCIsImludGVybmFsX3NlY3JldCI6IjA4MzQ2Y2RlLWI5ZjktNDQ4Yy04NThmLTMxNjg4ODEzNmEzZCJ9.N1Za6q6NfInzHvRkud6Ojt_-RFg18a0601vdYWGKOrk"
}

ローカルPrisma Postgres

ローカルPrisma Postgresインスタンスへの接続文字列は、Accelerate経由のリモートインスタンスの構造を反映しています。

schema.prisma
datasource db {
provider = "postgresql"
url = "prisma+postgres://accelerate.prisma-data.net/?api_key=API_KEY"
}

ただし、この場合、API_KEYは認証情報を提供しません。代わりに、ローカルのPrisma Postgresインスタンスに関する情報をエンコードします。prisma devコマンドを介して、ローカル接続文字列を取得できます。

PostgreSQL

schema.prisma
datasource db {
provider = "postgresql"
url = "postgresql://janedoe:mypassword@localhost:5432/mydb?schema=sample"
}

MySQL

schema.prisma
datasource db {
provider = "mysql"
url = "mysql://janedoe:mypassword@localhost:3306/mydb"
}

Microsoft SQL Server

schema.prisma
datasource db {
provider = "sqlserver"
url = "sqlserver://:1433;initial catalog=sample;user=sa;password=mypassword;"
}

SQLite

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

CockroachDB

schema.prisma
datasource db {
provider = "cockroachdb"
url = "postgresql://janedoe:mypassword@localhost:26257/mydb?schema=public"
}

MongoDB

schema.prisma
datasource db {
provider = "mongodb"
url = "mongodb+srv://root:<password>@cluster0.ab1cd.mongodb.net/myDatabase?retryWrites=true&w=majority"
}

.env

接続URLを環境変数として提供することもできます。

schema.prisma
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}

その場合、ターミナルで環境変数を設定するか、.envという名前のdotenvファイルを提供することで行えます。これはPrisma CLIによって自動的に認識されます。

Prisma ORMは、次の状況でdotenvファイルから接続URLを読み取ります。

  • ビルド時にスキーマを更新する場合
  • 実行時にデータベースに接続する場合
DATABASE_URL=postgresql://janedoe:mypassword@localhost:5432/mydb
© . All rights reserved.