简体   繁体   English

django.db.utils.IntegrityError: CHECK 约束失败

[英]django.db.utils.IntegrityError: CHECK constraint failed

when I am migrating I am getting the error django.db.utils.IntegrityError: CHECK constraint failed.迁移时出现错误 django.db.utils.IntegrityError:CHECK 约束失败。 I am using django-cms.我正在使用 django-cms。 this error popped up after trying to add editor.js to the project尝试将 editor.js 添加到项目后弹出此错误

full Error:完整错误:

  Applying advita.0003_auto_20220615_1506...Traceback (most recent call last):
  File "C:\Users\mulla\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
  File "C:\Users\mulla\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\backends\sqlite3\base.py", line 413, in execute
    return Database.Cursor.execute(self, query, params)
sqlite3.IntegrityError: CHECK constraint failed: (JSON_VALID("sub_title") OR "sub_title" IS NULL)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File ".\manage.py", line 22, in <module>
    main()
  File ".\manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "C:\Users\mulla\AppData\Local\Programs\Python\Python38\lib\site-packages\django\core\management\__init__.py", line 401, in execute_from_command_line
    utility.execute()
  File "C:\Users\mulla\AppData\Local\Programs\Python\Python38\lib\site-packages\django\core\management\__init__.py", line 395, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Users\mulla\AppData\Local\Programs\Python\Python38\lib\site-packages\django\core\management\base.py", line 330, in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\Users\mulla\AppData\Local\Programs\Python\Python38\lib\site-packages\django\core\management\base.py", line 371, in execute
    output = self.handle(*args, **options)
  File "C:\Users\mulla\AppData\Local\Programs\Python\Python38\lib\site-packages\django\core\management\base.py", line 85, in wrapped
    res = handle_func(*args, **kwargs)
  File "C:\Users\mulla\AppData\Local\Programs\Python\Python38\lib\site-packages\django\core\management\commands\migrate.py", line 243, in handle
    post_migrate_state = executor.migrate(
  File "C:\Users\mulla\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\migrations\executor.py", line 117, in migrate
    state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial)
  File "C:\Users\mulla\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\migrations\executor.py", line 147, in _migrate_all_forwards
    state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial)
  File "C:\Users\mulla\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\migrations\executor.py", line 227, in apply_migration
    state = migration.apply(state, schema_editor)
  File "C:\Users\mulla\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\migrations\migration.py", line 124, in apply
    operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
  File "C:\Users\mulla\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\migrations\operations\fields.py", line 236, in database_forwards
    schema_editor.alter_field(from_model, from_field, to_field)
  File "C:\Users\mulla\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\backends\sqlite3\schema.py", line 138, in alter_field
    super().alter_field(model, old_field, new_field, strict=strict)
  File "C:\Users\mulla\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\backends\base\schema.py", line 571, in alter_field
    self._alter_field(model, old_field, new_field, old_type, new_type,
  File "C:\Users\mulla\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\backends\sqlite3\schema.py", line 360, in _alter_field
    self._remake_table(model, alter_field=(old_field, new_field))
  File "C:\Users\mulla\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\backends\sqlite3\schema.py", line 283, in _remake_table
    self.execute("INSERT INTO %s (%s) SELECT %s FROM %s" % (
  File "C:\Users\mulla\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\backends\base\schema.py", line 142, in execute
    cursor.execute(sql, params)
  File "C:\Users\mulla\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\backends\utils.py", line 98, in execute
    return super().execute(sql, params)
  File "C:\Users\mulla\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\backends\utils.py", line 66, in execute
    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
  File "C:\Users\mulla\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\backends\utils.py", line 75, in _execute_with_wrappers
    return executor(sql, params, many, context)
  File "C:\Users\mulla\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
  File "C:\Users\mulla\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\utils.py", line 90, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "C:\Users\mulla\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
  File "C:\Users\mulla\AppData\Local\Programs\Python\Python38\lib\site-packages\django\db\backends\sqlite3\base.py", line 413, in execute
    return Database.Cursor.execute(self, query, params)
django.db.utils.IntegrityError: CHECK constraint failed: (JSON_VALID("sub_title") OR "sub_title" IS NULL)

Can anyone clarify why I am getting this error?任何人都可以澄清为什么我会收到此错误吗?

This is happening because field 'sub_title' has values earlier which are not valid json.发生这种情况是因为字段“sub_title”之前的值无效 json。

Table probably already has values for 'sub_title' field and you are changing trying to change earlier fieldtype to jsonfield if this is the case, you should update all values to valid json first.表可能已经有“sub_title”字段的值,并且您正在尝试将早期的字段类型更改为 jsonfield 如果是这种情况,您应该首先将所有值更新为有效的 json。

You Faced This IntergrityError Because Your model sub_title does not have a null Field and You Direct do Change JsonField.您遇到此IntergrityError因为您的 model sub_title没有 null 字段并且您直接更改 JsonField。

JsonField required null=True and Previous Field (sub_title) doesn't have null=True which means you have some value in those filed. JsonField 需要null=True ,而 Previous Field (sub_title) 没有 null=True,这意味着您在这些字段中有一些价值。 After your migrations that Field already has value in the String for that reason, you got this error由于这个原因,在您迁移之后,该字段已经在字符串中具有值,您收到此错误

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

put that same Previous field and Add Constraint Null=True then apply migration after successful migration used then remove all Value from those Filed放置相同的 Previous 字段并添加 Constraint Null=True然后在使用成功迁移后应用迁移然后remove all Value from those Filed

Then You Change CharFiled to JsonField with constraint Null=True, Blank=True然后你将 CharFiled 更改为 JsonField 约束 Null=True, Blank=True

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

Then apply Migration.然后应用迁移。 it will definitely help you resolve this problem.它一定会帮助您解决这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 django.db.utils.IntegrityError: FOREIGN KEY 约束在 django 中失败 - django.db.utils.IntegrityError: FOREIGN KEY constraint failed in django Createsuperuser django.db.utils.IntegrityError: NOT NULL 约束失败 - Createsuperuser django.db.utils.IntegrityError: NOT NULL constraint failed django.db.utils.IntegrityError:NOT NULL约束失败 - django.db.utils.IntegrityError: NOT NULL constraint failed django.db.utils.IntegrityError: NOT NULL 约束失败: - django.db.utils.IntegrityError: NOT NULL constraint failed: django.db.utils.IntegrityError: FOREIGN KEY 约束失败 - django.db.utils.IntegrityError: FOREIGN KEY constraint failed django.db.utils.IntegrityError: NOT NULL 约束失败来自 Postman - django.db.utils.IntegrityError: NOT NULL constraint failed fom Postman django.db.utils.IntegrityError:唯一约束失败: - django.db.utils.IntegrityError: UNIQUE constraint failed: django.db.utils.IntegrityError:NOT NULL约束失败。 约束在哪里不被尊重? - django.db.utils.IntegrityError: NOT NULL constraint failed. Where is the constraint is not respected? 如何在 Django 上测试编辑功能? (错误 django.db.utils.IntegrityError: NOT NULL 约束失败) - How to test edit function on django? (error django.db.utils.IntegrityError: NOT NULL constraint failed) django.db.utils.IntegrityError: FOREIGN KEY 约束在通过 Selenium 和 Python Django 执行 LiveServerTestCases 时失败 - django.db.utils.IntegrityError: FOREIGN KEY constraint failed while executing LiveServerTestCases through Selenium and Python Django
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM