为了账号安全,请及时绑定邮箱和手机立即绑定

如何修复'django.db.utils.OperationalError:接近“无”

如何修复'django.db.utils.OperationalError:接近“无”

富国沪深 2021-09-24 15:46:14
我正在尝试为我的 Django REST 框架创建一个用户模型,但遗憾的是,我遇到了一些意想不到的困难:当我运行“python manage.py makemigrations”时,一切正常,但是,当我尝试运行迁移时,我遇到了这个错误'return Database.Cursor.execute(self, query) django.db.utils.OperationalError: near "None": syntax error'。我已经尝试更改 models.py 中的代码,但它仍然产生相同的结果,即使我将用户模型类设置为只有一个 id 字段。我正在使用 Django 版本 1.11.17 和 drf 版本 3.9.0模型.py:class User(models.Model):    id = models.AutoField(primary_key=True)    email = models.CharField(unique=True, null=False, max_length=200)    phone = models.IntegerField(unique=True, null=False)    first_name = models.CharField(null=False, max_length=200)    last_name = models.CharField(null=False, max_length=200)    is_active = models.BooleanField(_('active'), default=False)    last_seen = models.DateTimeField(auto_now=True, null=True)    updated_at = models.DateTimeField(auto_now=True, null=True)    created_at = models.DateTimeField(auto_now_add=True, null=True)    avatar = models.CharField(null=True)迁移/0001_initial.py:class Migration(migrations.Migration):    initial = True    dependencies = [    ]    operations = [    migrations.CreateModel(        name='User',        fields=[            ('id', models.AutoField(primary_key=True, serialize=False)),            ('email', models.CharField(max_length=200, unique=True)),            ('phone', models.IntegerField(unique=True)),            ('first_name', models.CharField(max_length=200)),            ('last_name', models.CharField(max_length=200)),            ('last_seen', models.DateTimeField(auto_now=True, null=True)),            ('updated_at', models.DateTimeField(auto_now=True, null=True)),            ('created_at', models.DateTimeField(auto_now_add=True, null=True)),            ('avatar', models.CharField(null=True)),        ],    ),]
查看完整描述

1 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

问题最终是我没有为 avatar 字段指定 max_length 因此由 django 生成的结果查询是

CREATE TABLE "user" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "email" varchar(200) NOT NULL UNIQUE, "phone" integer NOT NULL UNIQUE, "first_name" varchar(200) NOT NULL, "last_name" varchar(200) NOT NULL, "is_active" bool NOT NULL, "last_seen" datetime NULL, "updated_at" datetime NULL, "created_at" datetime NULL, "avatar" varchar(None) NULL);

并且 varchar(None) 破坏了语法。你知道的越多。


查看完整回答
反对 回复 2021-09-24
  • 1 回答
  • 0 关注
  • 262 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信