Ответ 1
Я могу поспорить, что у вас есть SlugField без предопределенной длины? Установите его на 255 и перенесите
У меня есть веб-сайт Django с мини-CMS, который мы построили много лет назад, используя postgresql. При сохранении простого заголовка и абзаца текста я получаю следующую ошибку:
value too long for type character varying(100)
Странно, что ни один столбец не меняется (100), все они 200 или 250, даже по умолчанию Django были изменены с 100 на 200 из-за повторный билет, указанный здесь
Кто-нибудь знает о решении этой проблемы?
Я могу поспорить, что у вас есть SlugField без предопределенной длины? Установите его на 255 и перенесите
У меня также была эта проблема при использовании файлового поля и некоторое время царапала мне голову. Конечно, экземпляры FileField по умолчанию создаются с пределом 100 символов.
https://docs.djangoproject.com/en/dev/ref/models/fields/#filefield
Это сообщение об ошибке из Postgres, а не django.
Кажется, вы изменили длину поля в models.py
, но это не изменило длину базы данных, которая была создана, когда вы сделали manage.py syncdb
.
Вы должны напрямую изменить длину поля в базе данных.
Я понимаю, что вопрос уже дан, но для других, которые приходят сюда при поиске сообщения об ошибке:
В моем случае проблема заключалась в том, что мое имя таблицы превысило 50 символов. По-видимому, это запрещено. Изменение имени таблицы решило проблему.
Подробнее здесь: https://code.djangoproject.com/ticket/18959
У меня была аналогичная проблема с django-autoslugfield Я использовал подобный пакет, а затем переключился на django-autoslugfield
Я получал эту ошибку:
value too long for type character varying(50)
несмотря на то, что мои models.py имели:
slug = AutoSlugField(max_length=255, populate_from='name', unique=True)
и в моем db это тип был
character varying 255
как только я удалю max_length=255
из поля i.e.
slug = AutoSlugField(populate_from='name', unique=True)
тогда он работал нормально
Михаил Самойлов ответ указал мне в правильном направлении. Я получил ту же ошибку, за исключением того, что она была с FileField.
Поля имеют максимальную длину, даже если вы явно не указали max_length. Увеличьте значение, чтобы ваши данные соответствовали во избежание ошибки.
В моем случае данные были слишком большими, чтобы разумно хранить в базе данных. Я прибегал к сохранению моего файла на диске, а затем сохранил путь к файлу в базе данных.