Преобразование базы данных sqlite в postgres дает DatabaseError: слишком большое значение для символа типа (50)

Вопрос: Я загружаю базу данных для своего приложения Django в Heroku, используя db:push который преобразует мою базу данных из sqlite в postgres. Однако во время процесса я получаю ошибку: Taps Server Error: PGError: ERROR: integer out of range Когда я пытаюсь создать чистую базу данных на сервере Heroku, используя python manage.py syncdb, я получаю аналогичное

Вопрос:

Я загружаю базу данных для своего приложения Django в Heroku, используя db:push который преобразует мою базу данных из sqlite в postgres.

Однако во время процесса я получаю ошибку:

Taps Server Error: PGError: ERROR: integer out of range

Когда я пытаюсь создать чистую базу данных на сервере Heroku, используя python manage.py syncdb, я получаю аналогичное сообщение:

Installing index for django_openid.UserOpenidAssociation model Installing json fixture ‘initial_data’ from ‘/app/.heroku/venv/lib/python2.7/site- packages/oembed/fixtures’. Installing json fixture ‘initial_data’ from ‘/app/.heroku/venv/lib/python2.7/site- packages/pinax/apps/photos/fixtures’. Installing json fixture ‘initial_data’ from ‘/app/store/fixtures’. Problem installing fixture ‘/app/store/fixtures/initial_data.json’: Traceback (most recent call last): File «/app/.heroku/venv/lib/python2.7/site-packages/django/core/management/commands/loaddata.py», line 169, in handle obj.save(using=using) File «/app/.heroku/venv/lib/python2.7/site-packages/django/core/serializers/base.py», line 165, in save models.Model.save_base(self.object, using=using, raw=True) File «/app/.heroku/venv/lib/python2.7/site-packages/django/db/models/base.py», line 501, in save_base rows = manager.using(using).filter(pk=pk_val)._update(values) File «/app/.heroku/venv/lib/python2.7/site-packages/django/db/models/query.py», line 491, in _update return query.get_compiler(self.db).execute_sql(None) File «/app/.heroku/venv/lib/python2.7/site-packages/django/db/models/sql/compiler.py», line 861, in execute_sql cursor = super(SQLUpdateCompiler, self).execute_sql(result_type) File «/app/.heroku/venv/lib/python2.7/site-packages/django/db/models/sql/compiler.py», line 727, in execute_sql cursor.execute(sql, params) File «/app/.heroku/venv/lib/python2.7/site-packages/django/db/backends/util.py», line 15, in execute return self.cursor.execute(sql, params) File «/app/.heroku/venv/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py», line 44, in execute return self.cursor.execute(query, args) DatabaseError: value too long for type character varying(50)

Мне кажется, что проблема заключается в исходных данных, но не совсем уверен. Я нашел здесь сообщение, в котором говорилось, что это может быть проблема с кодированием поля, но даже если я должен был изучить, что не совсем точно, как читать сообщение об ошибке, чтобы узнать, что именно вызывает проблему, а также определить, какая таблица /column может вызвать проблему.

Лучший ответ:

DatabaseError: value too long for type character varying(50) означает, что вы пытаетесь сохранить строку длиной более 50 символов в виде VARCHAR (50). Вы можете CharField потенциальных кандидатов, просмотрев ваши модели для CharField с max_length=50 или SlugField (который по умолчанию max_length=50). Затем просмотрите initial_data.json и посмотрите, не заметили ли вы какие-либо явно длинные строки для любого из этих полей.

Ответ №1

Как сказал @ChrisPratt, у меня была та же проблема, но я не смог понять проблему. У меня было только одно приложение в моем проекте, я удалил файлы * py в папке миграции приложения (кроме файла инициализации.py) и очистил все таблицы в моем sqlite3 db (в то время у меня не было никаких важных данных), а затем выполнил команду migrate. Это сработало!.

Оцените статью
Добавить комментарий