Переход на PostgreSQL поднять django.db.utils.OperationalError: нет такой таблицы Ошибка - PullRequest
0 голосов
/ 10 февраля 2019

Я разрабатывал базу данных SQLite по умолчанию для проекта Django, но теперь мне нужно развернуть ее на Heroku, поэтому я перешел на PostgreSQL.Однако во время развертывания я продолжал получать django.db.utils.OperationalError: no such table: error:

full error in heroku logs --tail:

2019-02-08T13:56:10.598144+00:00 app[web.1]: Internal Server Error: /catelogue/floor
2019-02-08T13:56:10.598152+00:00 app[web.1]: Traceback (most recent call last):
2019-02-08T13:56:10.598154+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/db/backends/utils.py", line 85, in _execute
2019-02-08T13:56:10.598156+00:00 app[web.1]: return self.cursor.execute(sql, params)
2019-02-08T13:56:10.598158+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py", line 296, in execute
2019-02-08T13:56:10.598160+00:00 app[web.1]: return Database.Cursor.execute(self, query, params)
2019-02-08T13:56:10.598162+00:00 app[web.1]: sqlite3.OperationalError: no such table: product_floor

Как видите, должна быть таблица с именем product_floor в SQLite.

Но проблема в том, что я уже обновил свою конфигурацию базы данных до PostgreSQL и удалил файл SQLite3 в папке своего проекта.Я также удалил все файлы миграции и кэшированные файлы и снова запустил python manage.py makemigrations и python manage.py migrate.

Когда я установил DEBUG в true и получил доступ к страницам в локальном браузере, проблем не было.Но когда я получаю доступ к определенным страницам, обслуживаемым по URL *.herokuapp.com/product/* (страницы, использующие данные из базы данных), я получаю Server Error 500.

My models.py

from django.db import models
from django.conf import settings
from django.utils import timezone

class Floor(models.Model):
    name = models.CharField(max_length=20, verbose_name='floor name')
    image = models.ImageField(
        upload_to='floor',
        blank=True,
        editable=True,
        verbose_name='floor image'
    )
    image_height = models.PositiveIntegerField(null=True, blank=True, editable=False, default="340")
    image_width = models.PositiveIntegerField(null=True, blank=True, editable=False, default="340")
    desc = models.CharField(max_length=256, verbose_name='floor description')
    price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='floor price')

    class Meta:
        app_label = 'product'

    def __str__(self):
        return self.name
### Add some classes with almost same fields

My settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': '[DB NAME]',
        'USER': '[DB USER]',
        'PASSWORD': '[***]',
        'HOST': 'localhost',
        'PORT': '',
    }

Кто-нибудь может мне помочь с этим?Большое спасибо!

1 Ответ

0 голосов
/ 07 марта 2019

Я наконец получил ответ.Казалось, что я внес небольшое изменение в модель db, поэтому после локального migrate / makemigrations предлагается снова запустить migrate после развертывания.Спасибо всем за предложения.

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