DatabaseError: значение слишком длинное для изменения типа символа (100) - PullRequest
34 голосов
/ 27 января 2012

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

value too long for type character varying(100)

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

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

Ответы [ 9 ]

63 голосов
/ 27 января 2012

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

25 голосов
/ 22 апреля 2013

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

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

13 голосов
/ 27 января 2012

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

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

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

1 голос
/ 11 января 2017

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

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

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

0 голосов
/ 01 января 2019

Django 2.1

Я столкнулся с этой проблемой при переходе с sqlite3 на postgresql.Удалите файлы миграции в папке миграции каждого приложения, кроме __ init __. Py , затем повторно запустите миграцию

(venv)myapp$python manage.py makemigrations
(venv)myapp$python manage.py migrate
(venv)myapp$python manage.py runserver
0 голосов
/ 17 октября 2018

Если это не SlugField, FileField или любое другое поле, упомянутое здесь - прокрутите назад до места, где миграция застряла в терминале. Для меня это было AddField

Хороший разговор.

0 голосов
/ 19 июня 2018

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

python manage.py makemigrations

затем

python manage.py migrate
0 голосов
/ 09 августа 2015

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

тогда все работало нормально

0 голосов
/ 01 сентября 2014

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

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

Подробнее читайте здесь: https://code.djangoproject.com/ticket/18959

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...