Подтвердить что ты не робот

DatabaseError: слишком длинное значение для символа типа (100)

У меня есть веб-сайт Django с мини-CMS, который мы построили много лет назад, используя postgresql. При сохранении простого заголовка и абзаца текста я получаю следующую ошибку:

value too long for type character varying(100)

Странно, что ни один столбец не меняется (100), все они 200 или 250, даже по умолчанию Django были изменены с 100 на 200 из-за повторный билет, указанный здесь

Кто-нибудь знает о решении этой проблемы?

4b9b3361

Ответ 1

Я могу поспорить, что у вас есть SlugField без предопределенной длины? Установите его на 255 и перенесите

Ответ 2

У меня также была эта проблема при использовании файлового поля и некоторое время царапала мне голову. Конечно, экземпляры FileField по умолчанию создаются с пределом 100 символов.

https://docs.djangoproject.com/en/dev/ref/models/fields/#filefield

Ответ 3

Это сообщение об ошибке из Postgres, а не django.

Кажется, вы изменили длину поля в models.py, но это не изменило длину базы данных, которая была создана, когда вы сделали manage.py syncdb.

Вы должны напрямую изменить длину поля в базе данных.

Ответ 4

Я понимаю, что вопрос уже дан, но для других, которые приходят сюда при поиске сообщения об ошибке:

В моем случае проблема заключалась в том, что мое имя таблицы превысило 50 символов. По-видимому, это запрещено. Изменение имени таблицы решило проблему.

Подробнее здесь: https://code.djangoproject.com/ticket/18959

Ответ 5

У меня была аналогичная проблема с 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)

тогда он работал нормально

Ответ 6

Михаил Самойлов ответ указал мне в правильном направлении. Я получил ту же ошибку, за исключением того, что она была с FileField.

Поля имеют максимальную длину, даже если вы явно не указали max_length. Увеличьте значение, чтобы ваши данные соответствовали во избежание ошибки.

В моем случае данные были слишком большими, чтобы разумно хранить в базе данных. Я прибегал к сохранению моего файла на диске, а затем сохранил путь к файлу в базе данных.