我已将 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")
语法有什么问题。请帮我看看我哪里出错了?
最佳答案
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',
}
}
并从 models.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)
关于mysql - Django 中的 ArrayField 在进行迁移时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57395390/