首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Django on Heroku: / ProgrammingError“theblog_category”处的关系不存在

在使用 Django 框架开发应用并在 Heroku 上部署时,遇到 ProgrammingError 并提示“theblog_category”处的关系不存在,通常是由于数据库迁移问题引起的。以下是详细的原因分析和解决方案:

基础概念

  • Django ORM:Django 的对象关系映射(ORM)系统允许开发者通过 Python 代码来操作数据库。
  • 数据库迁移:Django 使用迁移文件来跟踪模型变化,并将其应用到数据库中。

可能的原因

  1. 迁移文件未应用:在本地开发环境中创建了新的迁移文件,但未将其应用到 Heroku 上的数据库。
  2. 迁移历史不一致:本地和 Heroku 上的迁移历史不一致,导致 Heroku 上的数据库缺少某些表。
  3. 数据库初始化问题:Heroku 上的数据库可能未正确初始化或重置。

解决方案

步骤 1:确保迁移文件已创建并应用

首先,确保你在本地已经创建并应用了所有必要的迁移文件。

代码语言:txt
复制
# 在本地项目目录中
python manage.py makemigrations
python manage.py migrate

步骤 2:将迁移文件推送到 Heroku

确保你的迁移文件已经推送到 Heroku。

代码语言:txt
复制
git add .
git commit -m "Apply migrations"
git push heroku main

步骤 3:在 Heroku 上应用迁移

登录到 Heroku 并应用迁移。

代码语言:txt
复制
heroku run python manage.py migrate

步骤 4:检查数据库状态

如果问题仍然存在,可以检查 Heroku 上的数据库状态,确保所有表都已正确创建。

代码语言:txt
复制
heroku run python manage.py dbshell

在数据库 shell 中,运行以下命令查看表是否存在:

代码语言:txt
复制
\d theblog_category

步骤 5:重置数据库(谨慎操作)

如果上述步骤都无法解决问题,可以考虑重置 Heroku 上的数据库。请注意,这将删除所有现有数据。

代码语言:txt
复制
heroku addons:destroy heroku-postgresql
heroku addons:create heroku-postgresql:hobby-dev

然后再次应用迁移:

代码语言:txt
复制
heroku run python manage.py migrate

示例代码

假设你有一个名为 Category 的模型:

代码语言:txt
复制
# models.py
from django.db import models

class Category(models.Model):
    name = models.CharField(max_length=100)

    def __str__(self):
        return self.name

确保你已经运行了以下命令来创建和应用迁移:

代码语言:txt
复制
python manage.py makemigrations
python manage.py migrate

并在 Heroku 上执行相同的操作:

代码语言:txt
复制
heroku run python manage.py migrate

通过这些步骤,你应该能够解决 ProgrammingError 并确保 theblog_category 表存在于 Heroku 上的数据库中。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

django migrate 常见错误总结 and 对应方法

: relation "jobs_h1_table" already exists  django.db.utils.ProgrammingError: リレーション"jobs_h1_table"はすでに...は存在しません  ※若是新作成的model报table不存在,若是既存的model变更追加了字段,则报field不存在問題:table/ column存在しないエラー操作:python manage.py...makemigrations app1   ※jobs_h1_table 在 App2 里定义,与app1无关前提:app2,app1 中的model无参照关系 (例:App2中model的外键指向...app1的model)   ※若存在参照关系,那按照 parent→chilren的顺序,执行移行即可解决。...根据log的提示,看一下官网文档说了什么 dependencies大概就是有依赖关系的app,要先migrate parent,再migrate childrensWhile migrations are

1.8K20

关于“Python”的核心知识点整理大全64

在1处,修改ALLOWED_HOSTS,只允许Heroku托管这个项目。...在2处,我们将DEBUG设置为False,让Django不在错误发生时显示敏感 信息。...2处显示的状态表明我们在仓库的分支master上工作,当前没有任何未提交的修改。推送到Heroku之前,必须检查状态并看到刚才所说的消息。...404错误通常意味着你的Django代码是正确 的,但请求的对象不存在。500错误通常意味着你编写的代码有问题,如views.py中的函数有问题。...使用方法get_object_or_404() 现在,如果用户手工请求不存在的主题或条目,将导致500错误。Django尝试渲染请求的页 面,但没有足够的信息来完成这项任务,进而引发500错误。

10210
  • 关于“Python”的核心知识点整理大全62

    dj-database-url包帮助 Django与Heroku使用的数据库进行通信,dj-static和static3包帮助Django正确地管理静态文件, 而gunicorn是一个服务器软件,能够在在线环境中支持应用程序提供的服务...在2处,我们导入了dj_database_url,用于在Heroku上配置服务器。...其他设置的作用分别如下:支持HTTPS请求(见3);让Django能够使用 Heroku的URL来提供项目提供的服务(见4);设置项目,使其能够在Heroku上正确地提供静态 文件(见5)。...20.2.9 创建用于存储静态文件的目录 在Heroku上,Django搜集所有的静态文件,并将它们放在一个地方,以便能够高效地管理它 们。我们将创建一个用于存储这些静态文件的目录。...这里的输出表明启动了 gunicorn,其进程id为12875(见1)。处的输出表明,gunicorn在端口5000上侦听请求。

    16610

    django 1.8 官方文档翻译:6-3 Django异常

    Django异常 DJango会抛出一些它自己的异常,以及Python的标准异常。 Django核心异常 Django核心异常类定义在django.core.exceptions中。...FieldDoesNotExist exception FieldDoesNotExist[source] 当被请求的字段在模型或模型的父类中不存在时,FieldDoesNotExist异常由模型的 _...ViewDoesNotExist exception ViewDoesNotExist[source] 当所请求的视图不存在时,ViewDoesNotExist 异常由 django.core.urlresolvers...Database Exceptions 数据库异常由django.db导入。 Django封装了标准的数据库异常,以便确保你的DJango代码拥有这些类的通用实现。...exception DataError exception OperationalError exception IntegrityError exception InternalError exception ProgrammingError

    1.3K20

    Django项目开发环境搭建登录页面笔记1

    Django项目中管理实现不同的业务功能。...b、路径和要执行的函数的对应关系 --> 主要业务逻辑         c、字符串替换 --> 模板(特殊符号-->数据) 2)、一个完整的请求流程:         a、启动服务器,等待客户端(用户的浏览器...c、服务器端收到请求消息,解析请求消息,根据路劲和函数的对应关系,找到将要执行的函数         d、执行函数,打开html 文件,进行字符串的替换,得到最终要返回的html页面的内容。         ...                2、相对于大神写的SQL语句,执行的效率有些差距 ORM的关系:         类        -->数据表         对象    -->数据行         ...'PORT': 3306, 'USER': 'bce2121ed982cf', 'PASSWORD': '8a73e1cc', 'NAME': 'heroku

    81930

    程序员全职接单一个月的感触

    但是,现在已经过了 ”不会但我会学“ 就能感动面试官的时代,随着供需关系的变化,不论是对于面试官还是面试者,面试的成本越来越高。...你也可以和一个靠谱的中介建立稳定的合作关系,这样你就不缺需求了。 其实大学时我就试过接单了,从校内课程设计,到一些学校的毕设,后来开了某宝店,提供软件外包和咨询服务。...(由于太久没管理,店铺已经不存在了) 收入 大家最看重的可能就是收入问题了,本文没有网上说的月入大几万这么夸张。...与一份稳定的工作不同,自己接单不存在上班摸鱼这个概念。上班摸鱼摸一个月,你的工资还是一样照发,同时你还要考虑节假日,五险一金等等。...在这一个月的接单中:我接触了我非常陌生的php,python;用 react + django 写了一个简单的社交网站;用 heroku 部署了两个网站;接触了以太坊加密;用css3d构建了圣诞节的3d

    23711

    Python Web 深度学习实用指南:第四部分

    启动服务器后,该 UI 将在http://127.0.0.1:4000处可见,如“创建 API 回答搜索查询”部分的步骤 9 所示。...最后,我们将项目部署到 Heroku。 将项目部署到 Heroku 在本节中,我们将研究如何将演示应用部署到 Heroku。...词干提取是一个基于规则的过程,在该过程中,单词会被修剪,有时还会附加指示其词根的修饰符。 但是,词干提取有时可能会产生人类词典中不存在的词根,因此对人类读者毫无意义。...在下一节中,我们将学习如何创建一个可以在本地计算机上处​​理 HTTPS 请求的 API。...在阅读理解系统中,神经网络通常学会捕捉给定问题与相关段落之间的深层语义关系,然后制定最终答案。 您可能已经知道,诸如 Google 搜索,必应等之类的搜索引擎已经具备阅读理解能力。

    6.9K10

    Python Django的安装

    一、Django简介 Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的软件设计模式,即模型M,视图V和控制器C。...配置文件 #需要修改三处位置 [root@localhost ~]# vim webproject/settings.py INSTALLED_APPS = (     'django.contrib.admin...django.contrib.messages',     'django.contrib.staticfiles',     'blog', #第一处添加blog应用 ) LANGUAGE_CODE... = 'zh-cn' #第二处修改为中文 TIME_ZONE = 'Asia/Shanghai' #第三处修改时区 (4)配置url访问路径 [root@localhost ~]# vim webproject...模板文件放在应用程序下面templates目录,这个目录默认不存在需要手动创建 (1)首先查看当前所处的位置和整体项目的目录文件结构 [root@localhost webproject]# pwd /

    62330

    python 标准库 sqlite3 介绍(一)

    SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的功能特点有: 1. ACID事务 2....零配置 – 无需安装和管理配置 3.储存在单一磁盘文件中的一个完整的数据库 4.数据库文件可以在不同字节顺序的机器间自由的共享 5.支持数据库大小至2TB 6....比一些流行的数据库在大部分普通数据库操作要快 8. 简单, 轻松的API 9. 包含TCL绑定, 同时通过Wrapper支持其他语言的绑定 10....: # IF NOT EXISTS 表示 仅当表不存在时才创建 #PRIMARY KEY 主键约束(值唯一) #NOT NULL 值非空约束 c.execute('''CREATE TABLE IF NOT..., records) 保存更改: conn.commit()#提交更改 #关闭与数据库的连接 #conn.close() #不能操作已关闭的数据库,报错:sqlite3.ProgrammingError

    1.4K30

    Python开发者年度调研:一半Python用户也用JS,23选择Linux系统

    4、Flask和Django是Web开发人员中流行度最高的框架,两者份额相差无几,但都甩其他Python Web框架“好几条街”。...6、AWS是Python开发人员最受欢迎的云平台,其次才是Google Cloud Platform,Heroku,DigitalOcean 和Microsoft Azure。...WEB 框架 与上年相比,Flask的使用量增长了15个百分点,所以,Flask 已成为2018年最受欢迎的Web框架。当然,也有45%的受访者(2017年为41%)选择了Django。 ?...Google Cloud Platform 排在第二位,其次是Heroku,DigitalOcean 和Microsoft Azure。大约三分之一的受访者不使用任何云平台。...MongoDB和Redis 等非关系型数据库也非常受欢迎,因为非常多的Python用户正在进行某种形式的机器学习以及数据科学。 ?

    72120

    Python开发者年度调研:一半Python用户也用JS,23选择Linux系统

    4、Flask和Django是Web开发人员中流行度最高的框架,两者份额相差无几,但都甩其他Python Web框架“好几条街”。...6、AWS是Python开发人员最受欢迎的云平台,其次才是Google Cloud Platform,Heroku,DigitalOcean 和Microsoft Azure。...当然,也有45%的受访者(2017年为41%)选择了Django。 数据科学框架和库 根据统计,最流行的数据科学框架和库是:NumPy,Pandas,Matplotlib和SciPy。...Google Cloud Platform 排在第二位,其次是Heroku,DigitalOcean 和Microsoft Azure。大约三分之一的受访者不使用任何云平台。...MongoDB和Redis 等非关系型数据库也非常受欢迎,因为非常多的Python用户正在进行某种形式的机器学习以及数据科学。

    70620

    django创建表单以及表单数据类型和属性

    08.15自我总结 关于django的表单不同关系之间的创建 一.不同关系之间的创建 1.一对一 举例 母表:userinfo id name age 1 张三 12 2 李四 58 字表:private...数字 tinyint 不存在 - smallint SmallIntegerField(有符号) PositiveSmallIntegerField(没符号) - mediumint 不存在 - int...不存在 三.mysql与djamgo-orm数据类型对应属性 null 数据库中字段是否可以为空 db_column 数据库中字段的列名 default...中提供对UUID格式的验证 FilePathField(Field):字符串,Django Admin以及ModelForm中提供读取文件夹下文件的功能 参数: path:文件路径 match=None...storage = None:存储组件,默认django.core.files.storage.FileSystemStorage ImageField(FileField):上传图片的高度保存的数据库字段名

    78830
    领券