如何解决django.db.utils.IntegrityError:(1364,“字段'名称'没有默认值”)

时间:2019-01-11 15:52:11

标签: mysql django python-3.x

由于尝试为Django项目创建超级用户而收到此错误。不确定哪个表的“名称”列需要默认值。

为我的Django项目成功创建迁移后,我运行python manage.py createsuperuser创建超级用户并收到以下错误: django.db.utils.IntegrityError: (1364, "Field 'name' doesn't have a default value")。我安装了mysql(8.0),正在OSX上使用自制软件,并在虚拟环境中使用python 3。

我不确定上述命令尝试使用哪个数据库,更不用说哪个表了。无论如何,我都要遍历数据库中与项目以及mysql数据库相关的所有表,并在找到的唯一名称列上运行以下命令:

ALTER TABLE django_migrations ALTER COLUMN name SET DEFAULT '-'

但是我仍然收到此错误。我已经阅读了Django文档中的createsuperuser,并研究了一些Django代码,但解决该问题的价值很小。任何帮助,将不胜感激。

2 个答案:

答案 0 :(得分:1)

默认情况下,Django有一个名为auth_user的表用于提供用户身份验证,该表不包含名为name的字段,因此我假设您在自己的帐户中定义了自定义AUTH_USER_MODEL settings.py包含一个名为name的字段,未设置默认值。

答案 1 :(得分:1)

尝试:

ALTER TABLE django_content_type MODIFY COLUMN name character varying(50) NOT NULL DEFAULT 'not null';

或者如果您希望它为空:

ALTER TABLE django_content_type MODIFY COLUMN name character varying(50) NOT NULL DEFAULT '';

从这里拍摄:https://github.com/arteria/django-background-tasks/issues/139