Open1
a5SQLで生成したDDLを、Prismaが受け付けてくれなかった話

未だ理解しきれていないので、間違ったことをたくさん書いていると思います。
状況
- Dockerコンテナ上で、PostgresSQLを起動できている状態
- DDLは当然読み込まれる
- DDLはa5SQLを利用してER図からリバース生成したものを使用
- initのinsert文も読み込まれる
- DDLは当然読み込まれる
- Next.jsのサーバサイドにてAPI実装をする準備として、ORMのPrismaをDBと接続できるようにしたい
- DBへの接続はできた
- ただ、何かDocker上の初期データが既存されるぞ、、、
試したこと
- まずはPrismaをインストール
- 次に、schema.prismaを作成
- (a5SQLからリバース生成したERもとに、ChatGPTに作ってもらったけど、もっといい方法あれば教えてください。みんなこれ手作業で作ってるのか、、?)
- 次になにやら最初に打つらしいコマンドを実行
- ちゃんと理解したら追記します
- これを実行すると、既存のデータが消される
./sql/*.sql /docker-entrypoint-initdb.d/
原因
- 調べた感じでは、schema.prismaを基にコンテナで起動しているDBに対してのマッピングが実行される。
- この時に、Prisma側でinit.sqlが生成される(DDL)
- ただschema.prismaの情報と、DBの情報が合致しないとPrismaは既存のデータ消すよ?って言ってくる。ここでNoすると何も進まないので消すしかなかった。。
対応策
- Prismaが作成したDDLを、DockerImageをビルドする際にinitで読み込むDDLとすることで対応
- つまりa5SQLで作成したDDLではなく仕方が無いからPrismaに合わせたDDLを使用
- まぁ実現したい要件はどちらでも満たせるのでよいかなと。
残気になるポイント
- a5SQLからDDL作成を色々試したけど、どうもPrismaが求めている形式では出力できなかった。
- ツールとしての互換性がないか?私がミスってるのか?
- Prismaについてまだあんま理解できてない