django.db.utils.DataError:值太长,无法更改类型字符(650)

时间:2018-07-28 13:41:53

标签: python django

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

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

我已经执行了makemigrations和migration,当我发布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

有什么问题吗?

1 个答案:

答案 0 :(得分:0)

已解决

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

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

其中max_length为650 ...

我现在将其更改为:

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

它现在正在工作。