由于尝试为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代码,但解决该问题的价值很小。任何帮助,将不胜感激。
答案 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