Django.db.utils.IntegrityError: Ограничение CHECK не сработало

При миграции я получаю ошибку django.db.utils.IntegrityError: CHECK constraint failed. Я использую django-cms. Эта ошибка появилась после попытки добавить editor.js в проект

полная ошибка:

Может ли кто-нибудь пояснить, почему я получаю эту ошибку?

Это происходит потому, что поле 'sub_title' ранее имело значения, которые не являются правильными json.

Вероятно, в таблице уже есть значения для поля 'sub_title', и вы пытаетесь изменить тип поля на jsonfield, если это так, вам следует сначала обновить все значения до правильного json.

Вы столкнулись с этим IntergrityError потому, что в Вашей модели sub_title нет нулевого поля, и Вы напрямую изменили JsonField.

JsonField required null=True и предыдущее поле (sub_title) не имеет null=True, что означает, что у вас есть какое-то значение в этих полях. После миграции это поле уже имеет значение в строке, поэтому вы получили эту ошибку

django.db.utils.IntegrityError: CHECK constraint failed: (JSON_VALID("sub_title") OR "sub_title" IS NULL)

.

поместите то же самое поле Previous и добавьте ограничение Null=True, затем примените миграцию после успешного использования миграции remove all Value from those Filed

Затем вы меняете CharFiled на JsonField с ограничением Null=True, Blank=True

JSONField(_("Sub Title"), blank=True, null=True)

Затем примените Migration. Это определенно поможет вам решить эту проблему.

Вернуться на верх