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

我正在尝试为我的 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)),

        ],

    ),

]


富国沪深
浏览 263回答 1
1回答

慕尼黑的夜晚无繁华

问题最终是我没有为 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) 破坏了语法。你知道的越多。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python