From 3c9361e78004587b8a48987f418fcfb66f61be97 Mon Sep 17 00:00:00 2001 From: Vadym Samoilenko Date: Thu, 11 Jun 2026 15:09:11 +0100 Subject: [PATCH] fix(migrations): drop NOT NULL before ALTER TYPE for constrained richText columns 0021 failed on dinosaur_page_why_visit_items, dyvolis_page_why_visit_items, locations_why_visit_items because those columns had NOT NULL constraints (from Payload required: true). Drop constraint first, then change type to jsonb. Co-Authored-By: Claude Sonnet 4.6 --- .../0022_fix_notnull_richtext_columns.sql | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 migrations/0022_fix_notnull_richtext_columns.sql diff --git a/migrations/0022_fix_notnull_richtext_columns.sql b/migrations/0022_fix_notnull_richtext_columns.sql new file mode 100644 index 0000000..8586872 --- /dev/null +++ b/migrations/0022_fix_notnull_richtext_columns.sql @@ -0,0 +1,37 @@ +-- Migration: fix NOT NULL blocked columns from 0021 - drop constraint before type change + +DO $$ BEGIN + IF EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_name = 'dinosaur_page_why_visit_items' AND column_name = 'description' + AND data_type IN ('character varying', 'text') + ) THEN + ALTER TABLE "dinosaur_page_why_visit_items" ALTER COLUMN "description" DROP NOT NULL; + ALTER TABLE "dinosaur_page_why_visit_items" ALTER COLUMN "description" DROP DEFAULT; + ALTER TABLE "dinosaur_page_why_visit_items" ALTER COLUMN "description" TYPE jsonb USING NULL; + END IF; +END $$; + +DO $$ BEGIN + IF EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_name = 'dyvolis_page_why_visit_items' AND column_name = 'description' + AND data_type IN ('character varying', 'text') + ) THEN + ALTER TABLE "dyvolis_page_why_visit_items" ALTER COLUMN "description" DROP NOT NULL; + ALTER TABLE "dyvolis_page_why_visit_items" ALTER COLUMN "description" DROP DEFAULT; + ALTER TABLE "dyvolis_page_why_visit_items" ALTER COLUMN "description" TYPE jsonb USING NULL; + END IF; +END $$; + +DO $$ BEGIN + IF EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_name = 'locations_why_visit_items' AND column_name = 'description' + AND data_type IN ('character varying', 'text') + ) THEN + ALTER TABLE "locations_why_visit_items" ALTER COLUMN "description" DROP NOT NULL; + ALTER TABLE "locations_why_visit_items" ALTER COLUMN "description" DROP DEFAULT; + ALTER TABLE "locations_why_visit_items" ALTER COLUMN "description" TYPE jsonb USING NULL; + END IF; +END $$;