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

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

value too long for type character varying(100)

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

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

7 ответов


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


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

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


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

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

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


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

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

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


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

в моем случае проблема заключалась в том, что мое имя таблицы превышало 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)

и в моей БД это типа был character varying 255

как только я удалю max_length=255 С поля, т. е.

slug = AutoSlugField(populate_from='name', unique=True)

затем он работал нормально


Если вы используете Django, и ничего из этого не работает. попробуйте удалить все файлы миграции и снова запустить

python manage.py makemigrations

затем

python manage.py migrate