💨
(Prisma) Connections using insecure transport are prohibited. の解決
Docker上で動かしているNext.jsのコンテナで、TiDBに接続してprismaを動かしたい。
上記のページに従い、次のコマンドを実行。
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
エラーに言われたとおり、
を見る。問題を要約すると、 一部のORMはシステムのルートCAを使わないことがある。
ということなので、
下記ページでprismaのSSL connectionに関してヘルプを調べる。
sslcert=<PATH>: 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}"
Discussion