Django psycopg2.errors.StringDataRightTruncation:对于类型字符变化的值太长(200)

Posted

技术标签:

【中文标题】Django psycopg2.errors.StringDataRightTruncation:对于类型字符变化的值太长(200)【英文标题】:Django psycopg2.errors.StringDataRightTruncation: value too long for type character varying(200) 【发布时间】:2021-04-03 04:29:06 【问题描述】:

运行 django 应用时遇到上述错误。究竟需要改变什么? comment_body = models.TextField() 方面很可能是罪魁祸首,因为它存储了可以不同长度的 reddit cmets。当我做一个 git clone 并在我的本地运行它时,奇怪的是它可以工作。

模型.py

from django.db import models

# Create your models here.
class Subreddit(models.Model):
    # Field for storing the name of a subreddit
    subreddit_name = models.CharField(max_length=200, unique=True)

    # Field for storing the time the model object was last saved
    last_updated = models.DateTimeField(auto_now=True)

class Submission(models.Model):
    subreddit = models.ForeignKey(Subreddit, on_delete=models.CASCADE)

    # The Reddit submission id of the object
    submission_id = models.CharField(max_length=200, unique=True)

    # Reddit Submission URL
    url = models.URLField(max_length=200)

    # Reddit Submission Title
    title = models.CharField(max_length=200)


class SubmissionComment(models.Model):
    # Parent submission object
    submission = models.ForeignKey(Submission, on_delete=models.CASCADE)

    # Text of the comment
    comment_body = models.TextField()

class Meme(models.Model):
    memeurl = models.URLField(max_length=200)

编辑:

新的错误 post char 更改为 300,迁移在本地和 heroku 上运行。

【问题讨论】:

【参考方案1】:

鉴于错误:value too long for type character varying(200),您应该查找 max_length 为 200 的模型字段。由于您有多个字段的 max_length 设置为 200,因此您需要确定哪个模型和字段引发错误。检查堆栈跟踪,运行调试器和/或插入一些调试print(instance.__dict__)s。找到罪魁祸首后,将该字段的 max_length 扩展到更大的值或将其转换为 TextField

【讨论】:

感谢schillingt,发现其中一个问题有230个字符!在本地克隆应用程序,在模型中进行更改,然后在本地迁移,然后 heroku 推送,然后在 heroku 上迁移。仍然收到 500 服务器错误。知道这个新错误是什么意思吗? (添加截图) 在使用 Postgres 时几乎没有理由使用 CharField。 TextField 的性能同样出色。您可能只需要为管理员和表单指定一个小部件。

以上是关于Django psycopg2.errors.StringDataRightTruncation:对于类型字符变化的值太长(200)的主要内容,如果未能解决你的问题,请参考以下文章

Django之路

Django系列

django 错误

mac电脑安装django ,运行django报错解决

Django 大神带你飞系列~走进Django

django的文档