Django中的ArrayField在进行迁移时出现错误

时间:2019-08-07 13:15:57

标签: mysql django django-models django-rest-framework django-mysql

我在应用程序中添加了arrayfield进行建模。下面是我的模型

class employees(models.Model):
   firstName=models.CharField(max_length=10)
   lastName=models.CharField(max_length=10)
   tags_data = ArrayField(models.CharField(max_length=10, blank=True),size=8,default=list)

下面是我的迁移文件数据。

class Migration(migrations.Migration):

initial = True

dependencies = [
]

operations = [
    migrations.CreateModel(
        name='employees',
        fields=[
            ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
            ('firstName', models.CharField(max_length=10)),
            ('lastName', models.CharField(max_length=10)),
            ('tags_data', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=10), default=list, size=8)),
        ],
    ),
]

进行迁移时,出现以下错误

django.db.utils.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[8] NOT NULL)' at line 1") 

语法有什么问题。请帮助我我要去哪里错了?

1 个答案:

答案 0 :(得分:2)

ArrayField特定于Postgres,并且是从Postgres库中导入的。 所有这些字段都可以从 django.contrib.postgres.fields 模块中获得。

使用Postgesql确保您的数据库配置。 看起来您正在尝试将迁移提交到MySql。您应该建立一个本地Postgres数据库,并从中更新settings.py文件。

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.postgresql',
    'NAME': 'DATABASE NAME',
    'USER': 'USER NAME',
    'PASSWORD': 'USER PASSWORD',
    'HOST': 'localhost',
    'PORT': '5432',
}
}

并从模型中创建迁移。py

from django.db import models
from django.contrib.postgres.fields import ArrayField
# Create your models here.

class employees(models.Model):
   firstName=models.CharField(max_length=10)
   lastName=models.CharField(max_length=10)
   tags_data = ArrayField(models.CharField(max_length=10, blank=True),size=8,default=list)