我在应用程序中添加了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")
语法有什么问题。请帮助我我要去哪里错了?
答案 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)