fix: миграция 0021 — drop server_default перед сменой типа на JSON

PostgreSQL не может автоматически привести строковый default к типу JSON.
Решение: убрать default, сменить тип, затем поставить новый default через raw SQL.
This commit is contained in:
Fringg
2026-03-06 16:45:03 +03:00
parent 6deab7dd8c
commit 3d3bb3badb
@@ -84,14 +84,17 @@ def upgrade() -> None:
""")
# --- 2. ALTER COLUMN types: String/Text -> JSON ---
# Must drop server_default before type change — PG can't auto-cast defaults
op.alter_column('landing_pages', 'title', server_default=None)
op.alter_column(
'landing_pages',
'title',
type_=sa.JSON(),
postgresql_using='title::jsonb',
server_default='{}',
nullable=False,
)
op.execute("ALTER TABLE landing_pages ALTER COLUMN title SET DEFAULT '{}'::jsonb")
op.alter_column(
'landing_pages',
'subtitle',