簡體   English   中英

更改為PostgreSQL會引發django.db.utils.OperationalError:沒有此類表錯誤

[英]Change to PostgreSQL raise django.db.utils.OperationalError: no such table Error

我正在為Django項目使用默認的DB SQLite開發,但是現在我需要部署到Heroku,所以我切換到PostgreSQL。 但是,在部署期間,我一直在獲取django.db.utils.OperationalError: no such table: error:

heroku logs --tail完全錯誤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

如您所見,SQLite中應該有一個名為product_floor的表。

但是問題是,我已經將數據庫配置更新為PostgreSQL,並刪除了項目文件夾中的SQLite3文件。 我還刪除了所有遷移文件和緩存文件,並再次運行python manage.py makemigrationspython manage.py migrate再次python manage.py migrate

當我將DEBUG為true並在本地瀏覽器中訪問頁面時,沒有問題。 但是,當我訪問URL *.herokuapp.com/product/*提供的某些頁面(使用數據庫數據的頁面)時,出現Server Error 500

我的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

我的settings.py

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

誰能幫我這個? 非常感謝!

我終於得到了答案。 看來,我做的DB模式的微小變化,所以這兩個后migrate / makemigrations本地,它的建議運行migrate部署后再次。 謝謝大家的建議。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM