Skip to content

Latest commit

 

History

History
47 lines (37 loc) · 1.86 KB

1be79d57f50535.md

File metadata and controls

47 lines (37 loc) · 1.86 KB
title emoji type topics published
(Prisma) Connections using insecure transport are prohibited. の解決
💨
tech
tidb
mysql
prisma
node
docker
true

Docker上で動かしているNext.jsのコンテナで、TiDBに接続してprismaを動かしたい。

https://www.prisma.io/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/using-prisma-migrate-typescript-mysql 上記のページに従い、次のコマンドを実行。

npx prisma migrate dev --name init
/app $ npx prisma migrate dev --name init
Environment variables loaded from .env
Prisma schema loaded from prisma/schema.prisma
Datasource "db": MySQL database "test" at "gateway01.ap-northeast-1.prod.aws.tidbcloud.com:4000"

Error: Schema engine error:
Connections using insecure transport are prohibited. See https://docs.pingcap.com/tidbcloud/secure-connections-to-serverless-tier-clusters

エラーに言われたとおり、 https://docs.pingcap.com/tidbcloud/secure-connections-to-serverless-tier-clusters を見る。

問題を要約すると、 一部のORMはシステムのルートCAを使わないことがある。 ということなので、

下記ページでprismaのSSL connectionに関してヘルプを調べる。 https://www.prisma.io/docs/orm/overview/databases/mysql#configuring-an-ssl-connection

sslcert=: Path to the server certificate.

ssl certificate のPATHを指定することが出来るということなので、環境変数に以下を追加。

SSL_CERT_PATH="/etc/ssl/cert.pem"

筆者のdocker環境はalpineなので、上記の場所に証明書がある。 下記のように環境変数のパラメータを定義すれば接続できた。

DATABASE_URL="mysql://${TIDB_USER}:${TIDB_PASSWORD}@${TIDB_HOST}:${TIDB_PORT}/${TIDB_DATABASE}?sslcert=${SSL_CERT_PATH}"