Planetscale/Prisma/NextAuth


Planetscale Prisma


#PlanetScale
#PlanetScale quickstart
#Prisma
#リファレンス
環境設定_
ブランチを作ったりはサイト上で行う
https://app.planetscale.com/

1.SHADOWブランチに接続

DATABASE_URL='mysql://root@127.0.0.1:3309/teppy-link'

schema.prismaを編集

 url                  = env("SHADOW_DATABASE_URL")

本番用のキーはサーバーに登録する必要がある?

テーブルの変更_
2.ブランチのローカルDBとして起動する

pscale connect teppy-link main-shadow --port 3309


.prisma/clientなどの更新
prisma/schema.prisma で schema 編集後

npx prisma format && npx prisma db push

※pushのオプション
--force-reset --accept-data-loss

3.PlanetScaleにデプロイする
デプロイリクエスト(pullrequest みたいなやつ)

pscale deploy-request create teppy-link main-shadow


4.PlanetScaleのメインに反映する

変更点の確認とデプロイの実行はサイト上で行う
実行コマンドは割愛

prisma/clientへの反映?_

npx prisma generate


schema.prismaを本番用にもどす編集

  url                  = env("DATABASE_URL")


開発環境への反映

npm run dev


ここまでで開発環境に変更が反映される

本番にデプロイ


Vercelにデプロイする時にエラーが出たらVercel側からキャッシュ無しでデプロイを実行

残ったキャッシュを参照してprismaの型エラーになってるぽい

Vercelにデプロイする前にnpm run buildが必要?

その他


1.Prisma StudioでデータベースにアクセスしてGUIで確認

npx prisma studio


2.scheme.prismaの取得

npx prisma db pull

※.envのアドレスから取得
※scheme.prismaがある場合は上書きされる
※これで取得したらnextauthで必要な型と異なってログイン出来なくなる?

エラー時の対応

next-auth/prisma-adapterの更新時は一度削除してからインストールする
参考サイト

npm uninstall next-auth @next-auth/prisma-adapter


npm install @next-auth/prisma-adapter


本番でログインボタンが表示されなくなった場合
※api/auth/errorに遷移する場合
参考サイト

requiredなどの整合性が取れない変更の場合

使い方

チートシート

そのうちやるやつ↓

routines:tls_process_server_certificate:certificate verify failed

こんなエラーがでて接続できない時。
そもそもPlanetScaleにかかれている接続方法のDATABASE_URLの末尾にはSSL接続のために ?sslaccept=strict というものがついている。コンテナ稼働でデプロイされていると証明書周りの問題でこのあたりがだめっぽいとのこと。
なので解決方法としては sslaccept=accept_invalid_certs にすれば良いとのこと。(本当にそれでいいかは不明)
参考)
https://github.com/prisma/prisma/issues/884