🐡

PrismaでNOT NULLでカラム追加したい

2022/10/19に公開

概要

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値を設定して記述し、その後消します。
https://www.prisma.io/docs/guides/database/developing-with-prisma-migrate/add-prisma-migrate-to-a-project

  1. --create-onlyでMigration対象のSQLを生成する
    $ npx prisma migrate dev --create-only
  2. 生成されたSQLを編集
-- 一度DEFAULT値ありで作成
ALTER TABLE `テーブル名` ADD COLUMN `カラム名` VARCHAR(191) DEFAULT '';

-- その後NOT NULL制約を付与
ALTER TABLE `テーブル名` MODIFY COLUMN `カラム名` VARCHAR(191) NOT NULL;
  1. migrateを実施
    $ npx prisma migrate dev

Discussion