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