AyumuOgasawara / receipt-scanner

レシートの写真から家計簿を生成してくれるアプリ
0 stars 0 forks source link

prismaを使って、データベースのテーブルを作成する #25

Closed AyumuOgasawara closed 1 week ago

AyumuOgasawara commented 1 week ago

概要

prismaを使用して、データベースのテーブルを作成する。

AyumuOgasawara commented 1 week ago

認証がうまくできない

compose.ymlの設定

db:
    image: postgres
    restart: always
    # set shared memory limit when using docker-compose
    shm_size: 128mb
    volumes:
      - postgres_volume:/var/lib/postgresql/data
    environment:
      POSTGRES_PASSWORD: receiptScanner
    ports:
      - 5432:5432

.env

DATABASE_URL="postgresql://postgres:receiptScanner@localhost:5432/mydb?schema=public"

schema.prisma

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}
AyumuOgasawara commented 1 week ago

以下を実行する
npx prisma migrate dev --name init

エラーメッセージ

ayumu@AyumunoMacBook-Air receipt-scanner % npx prisma migrate dev --name init
Environment variables loaded from .env
Prisma schema loaded from prisma/schema.prisma
Datasource "db": PostgreSQL database "mydb", schema "public" at "localhost:5432"

Error: P1000: Authentication failed against database server at `localhost`, the provided database credentials for `postgres` are not valid.

Please make sure to provide valid database credentials for the database server at `localhost`.
AyumuOgasawara commented 1 week ago

パスワードは通っているか確認するために、dbeverで実行してみたが認証がうまくいかなかった。

実行写真

スクリーンショット 2024-09-23 0 25 04
AyumuOgasawara commented 1 week ago

postgresのボリュームをcompose.ymlで作成しており、それを削除し、再びコンテナを立ち上げるとうまく行った。

以下のコマンドでボリュームを削除した
docker volume rm $(docker volume ls)

AyumuOgasawara commented 1 week ago

prismaで .env.local を読み込むために dotenv-cliをインストールした

migrationを実行する際は以下のコマンドで実行する。
./node_modules/.bin/dotenv -e .env.local -- npx prisma migrate dev

AyumuOgasawara commented 1 week ago

compose.ymlのPOSTGRES_PASSWORDを直書きでないとうまく動かない。。 とりあえず、HACKでコメントをしている。

AyumuOgasawara commented 1 week ago

migrationを実行する際は以下のコマンドで実行する。

./node_modules/.bin/dotenv -e .env.local -- npx prisma migrate dev

動作確認をすると、prisma client側でenvファイルを参照しており、うまく動かなかった。 そのため、dotenvをアンインストールし、envファイルを使用するようにする。

AyumuOgasawara commented 1 week ago

.env ファイルを.gitignoreに入れ、.env.defaultを作成し、ここに環境変数の例を書いていく。