[英]Relation does not exist error in Django
我知道关于这个问题有很多问题,我查看了解决方案,但不幸的是,没有一个对我有用。
我创建了一个名为“usermanagement”的新应用程序,并向该应用程序添加了一个 model。 添加 model 后,我将用户管理添加到设置中的 INSTALLED_APPS。 然后我运行了 python manage.py makemigrations 和 python manage.py migrate。 这一切都很好。 我也确实尝试使用应用程序名称运行迁移。
当我尝试通过使用以下方法将 model 的新实例添加到 Python-Django shell 中的数据库时,问题就开始了:
>>>a = ClubOfficial(name="randomName", email="randomemail@random.com")
>>>a.save()
我收到以下错误:
django.db.utils.ProgrammingError:关系“usermanagement_clubofficial”不存在第 1 行:插入“usermanagement_clubofficial”(“name”,“email”)...
下面是model代码:
class ClubOfficial(models.Model):
name = models.CharField(max_length=254)
email = models.EmailField(max_length=254)
如果有帮助,我使用 postgresql,并尝试重新启动服务器。 该程序中的其他应用程序也工作得很好,只是 usermanagem.net 有这个问题。
有谁知道可能出了什么问题?
感谢您的时间!
注意:我现在用不同的名称创建了一个新的应用程序,从用户管理中复制粘贴了一些东西并且一切正常。 我认为问题可能是在我再次创建它之前删除了一个名为 usermanagement 的应用程序。 也许这以某种方式搞砸了数据库。
我遇到了这个。 在我来说,我有一个以前的工作Django应用程序,还没有转移到生产,所以我在我的应用程序的迁移,删除所有文件夹,然后使用Django扩展我擦PostgreSQL数据库,并与缓存的文件:
./manage.py clear_cache
./manage.py clean_pyc
./manage.py reset_schema
./manage.py reset_db
# then deleted all files (including __init__.py) from my app's migrations folder.
我确认我的 postgresql 数据库没有表。 然后我跑了:
./manage.py makemigrations
./manage.py migrate
这给出了输出:
No changes detected
./manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
(about 11 more lines of output here which are similar)
值得注意的是,我的模型名称在迁移中无处可见。 我在我的 postgresql 数据库中打印了这些表,并且 Widget 和 Section 表都丢失了。 运行应用程序给了我这个错误(我用'app'和'model'代替了他们的真实姓名):
ProgrammingError at /my_path
relation "app_model" does not exist
LINE 1: ..."."my_field", "app_model"."my_field" FROM "appname...
所以模型的表没有在数据库中创建。 我的应用程序的迁移文件夹也完全是空的。 解决方案是将一个空的__init__.py
添加到我的应用程序的迁移文件夹中,然后运行makemigrations
能够在该文件夹中创建并保存迁移文件。 然后可以使用migrate
执行此操作。 您可以通过在 migrations/ 文件夹中使用和不使用__init__.py
运行makemigrations
来自己测试。
这个解决方案不是我的,而是用户Ljubitel
在另一篇文章中给出的,但它不是那里接受的答案,但接受的答案对我不起作用,所以我在这里写了这个解决方案,希望能帮助其他人。
我有同样的问题,但我所要做的就是运行
$ python manage.py makemigraions
和
$ python manage.py migrate
如果您删除了迁移文件夹。 app name
您创建的任何app name
创建一个名为migration
的文件夹,然后在名为__init__.py
的迁移文件夹中创建一个文件
在我的例子中,我指向本地服务器和生产服务器之间的不同数据库。 生产服务器指向的数据库落后了几个版本,所以服务器无法找到关系。 如果您的问题仅限于一个环境,请先检查配置。
修复关系的另一种方法不存在错误
我遇到了同样的问题并使用以下方法修复,我使用的是 postgres(pgadmin 4)。
我知道关于此问题有很多问题,我仔细研究了解决方案,但不幸的是,没有一个对我有用。
我创建了一个名为“ usermanagement”的新应用,并向该应用添加了一个模型。 添加模型后,我在设置中将用户管理添加到INSTALLED_APPS中。 然后我运行了python manage.py makemigrations和python manage.py migration。 这一切都很好! 我也尝试使用应用名称运行迁移。
当我尝试通过使用以下命令将模型的新实例添加到Python-Django Shell中的数据库时,问题就开始了:
>>>a = ClubOfficial(name="randomName", email="randomemail@random.com")
>>>a.save()
我收到以下错误:
django.db.utils.ProgrammingError:关系“ usermanagement_clubofficial”不存在第1行:插入“ usermanagement_clubofficial”(“名称”,“电子邮件”)...
下面是模型代码:
class ClubOfficial(models.Model):
name = models.CharField(max_length=254)
email = models.EmailField(max_length=254)
如果有帮助,我使用postgresql,并尝试重新启动服务器。 该程序中的其他应用程序也可以正常运行,只是usermanagemenet出现了此问题。
有人知道会出什么问题吗?
感谢您的时间!
注意:我现在使用不同的名称创建了一个新应用,从用户管理中复制粘贴了内容,并且一切正常。 我认为问题可能出在删除名为usermanagement的应用之前,还是在我再次创建它之前。 也许这以某种方式弄乱了数据库。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.