🏡
prisma導入
作成日: 2024-01-27T15:31:00.000Z
最終更新: 2024-08-07T13:15:00.000Z
install
npm install prisma --save-dev
init
npx prisma init
スキーマの読み取り
- databaseにあるテーブルのスキーマを取得し、prismaの形式に変換して出力する
npx prisma db pull
CREATE TABLE IF NOT EXISTS `todos` (
`id` INT UNSIGNED AUTO_INCREMENT,
`title` TEXT NOT NULL,
`status` ENUM('pending', 'completed') DEFAULT 'pending',
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`update_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
);
↓
model todos {
id Int @id @default(autoincrement()) @db.UnsignedInt
title String @db.Text
status todos_status? @default(pending)
created_at DateTime? @default(now()) @db.Timestamp(0)
update_at DateTime? @default(now()) @db.Timestamp(0)
}
enum todos_status {
pending
completed
}
初期移行
migration
Original error: Error code: P1010
のエラー発生。
https://zenn.dev/prog24/scraps/159cfebf431e5bが参考になった。
結論
ここでMySQLの場合は
Database user must have CREATE, ALTER, DROP, REFERENCES ON . privileges
このように書かれている。
grant create, alter, drop, references on *.* to user;
を実行を試みたが、どうやらuserでは権限がなく付与できなかった。
mysqlをroot権限で入り直し、再度実行することで無事解決。
型
schema.prismaを書き換えるだけでは、型推論は変化しない。
prisma generate
を実行することで、変更が適用される。
form vs fetcher
https://remix.run/docs/en/main/discussion/form-vs-fetcher
これらを使い分ける際の基準は、URLを変更するかどうか