postgresql Django:数组值必须以“{”或维度信息开头

1cosmwyk  于 2023-06-29  发布在  PostgreSQL
关注(0)|答案(3)|浏览(169)

我试着添加一些像例子中的数组

tags = ArrayField(models.CharField(max_length=200),default=list)

我得到这个错误:

django.db.utils.DataError: malformed array literal: ""
DETAIL:  Array value must start with "{" or dimension information.

使用postgresql_psycopg2 ...

zdwk9cvp

zdwk9cvp1#

我遇到了同样的错误,我认为关键是删除失败的迁移,正如@nullable指出的那样。
我试过:

tags = ArrayField(models.CharField(max_length=50, blank=True), default=list)

在删除失败的迁移后,我能够makemigrationsmigrate。似乎没有必要指定sizeblanknull
文件参考
顺便说一句,在你的数据库中有一个名为 django_migrations 的表,你可以在那里找到最后一次成功的迁移。

gdx19jrr

gdx19jrr2#

topic_ids = ArrayField(models.IntegerField(blank=True), default=list)

删除旧迁移后,重新执行

python3 manage.py makemigrations
python3 manage.py migrate

对我很有效

hsgswve4

hsgswve43#

如果你正在将一种类型的字段转换为另一种类型的字段,我认为问题在于Django无法迁移以前的默认值字段或任何以前的值字段。
我的解决方案(因为我的字段不重要)是删除该字段,进行迁移以删除它,然后用ArrayField类型带回该字段,然后进行迁移。现在一切似乎都在工作。

相关问题