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