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. Это определенно поможет вам решить эту проблему.