🐡
PrismaでNOT NULLでカラム追加したい
概要
Prismaで既に存在するテーブルにカラムを追加する際、NOT NULLで追加しようとするとエラーがでる
Error:
⚠️ We found changes that cannot be executed:
• Step 0 Added the required column `xxxx` to the `xxx` table without a default value. There are 26 rows in this table, it is not possible to execute this step.
既にあるレコードの値が解決できないので実行出来ませんというエラーが出てきます。
解決策
Migrate時に生成されるSQLで一度DEFAULT値を設定して記述し、その後消します。
- --create-onlyでMigration対象のSQLを生成する
$ npx prisma migrate dev --create-only
- 生成されたSQLを編集
-- 一度DEFAULT値ありで作成
ALTER TABLE `テーブル名` ADD COLUMN `カラム名` VARCHAR(191) DEFAULT '';
-- その後NOT NULL制約を付与
ALTER TABLE `テーブル名` MODIFY COLUMN `カラム名` VARCHAR(191) NOT NULL;
- migrateを実施
$ npx prisma migrate dev
Discussion