首页 > 解决方案 > django.db.utils.DataError: value too long for type character varying(650)

问题描述

我有一个模型TextField,我最近将它max_length从 650 更改为 1500。

class Comment(models.Model)
    ...
    comment_text = models.TextField(max_length=1500, blank=True, null=True)

我已经执行了 makemigrations 和 migrate,当我发布超过 650 个字符的评论时,我的本地服务器上没有问题。

但是,当我在远程服务器上发表超过 650 多个字符的评论时,它会返回此错误:

  File "/home/james/postr/env/lib/python3.5/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
  File "/home/james/postr/env/lib/python3.5/site-packages/django/db/utils.py", line 94, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/home/james/postr/env/lib/python3.5/site-packages/django/utils/six.py", line 685, in reraise
    raise value.with_traceback(tb)
  File "/home/james/postr/env/lib/python3.5/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
django.db.utils.DataError: value too long for type character varying(650)

即使我检查了远程代码已更改为max_length=1500.

知道问题是什么吗?

标签: pythondjango

解决方案


解决了

在我的评论创建视图中,它还创建了一个Inbox对象:

inbox = Inbox.objects.create(user=post.user, replier=request.user, type='commented', text=ajax_comment, post=post)

其中有max_length650...

我现在将其更改为:

class Inbox(models.Model)
    ...
    text = models.CharField(max_length=1500)

现在它正在工作。


推荐阅读