我知道有很多关于这个问题的问题,我看过的解决方案,不幸的是没有一个为我工作。
I created a new app called "usermanagement", and added a model to the app. After adding the model I added usermanagement to INSTALLED_APPS in settings. Then I ran python manage.py makemigrations, and python manage.py migrate. This all worked fine! I also did try running the migrations with the app-name.
当我尝试在Python-Django shell中向数据库添加一个新的模型示例时,问题就出现了:
>>>a = ClubOfficial(name="randomName", email="randomemail@random.com")
>>>a.save()
出现以下错误:
django.db.utils.ProgrammingError:关系"用户管理_俱乐部官方"不存在行1:INSERT INTO "用户管理_俱乐部官方"("姓名","电子邮件")...
以下是型号代码:
class ClubOfficial(models.Model):
name = models.CharField(max_length=254)
email = models.EmailField(max_length=254)
如果有帮助的话,我使用postgresql,并且试过重新启动服务器。程序中的其他应用程序也运行得非常好,只是usermanageminet有这个问题。
有人知道哪里出了问题吗?
感谢您抽出宝贵时间!
注:我现在用不同的名字创建了一个新的应用程序,复制粘贴了用户管理的东西,一切都很好。我想问题可能是之前有一个名为用户管理的应用程序被删除了,在我重新创建它之前。也许这在某种程度上扰乱了数据库。
4条答案
按热度按时间cbeh67ev1#
TL;DR:请确保你的应用的migrations文件夹包含
__init__.py
文件。如果不存在,请将其作为空文件重新创建。我遇到了这个问题,我之前有一个运行中的django应用,还没有进入生产状态,所以我删除了应用migrations文件夹中的 everything,然后使用django扩展清除了postgresql数据库和缓存文件:
我验证了postgresql数据库没有表,然后运行:
其输出为:
值得注意的是,我的模型名称在迁移中找不到。我打印了postgresql数据库中的表,Widget和Section表都丢失了。运行应用程序时出现了以下错误(我用'app'和'model'替换了它们的真实的名称):
所以模型的表没有在数据库中创建。我的应用的migrations文件夹也是完全空的。解决方案是在我的应用的migrations文件夹中添加一个空的
__init__.py
。之后,运行makemigrations
就可以创建迁移文件并将其保存在文件夹中。然后,可以使用migrate
执行此操作。您可以通过在migrations/文件夹中运行makemigrations
(带或不带__init__.py
)来自己测试这一点。这个解决方案不是我的,而是用户
Ljubitel
在另一篇文章中给出的,但它不是那里的公认答案,但公认的答案对我不起作用,所以我在这里写这个解决方案,希望能帮助其他人。6ojccjat2#
我也有同样的问题,但我所要做的就是
以及
ej83mcc03#
如果已删除迁移文件夹,请在已创建的
app name
中创建名为migration
的文件夹,然后在名为__init__.py
的迁移文件夹中创建文件iqxoj9l94#
在我的例子中,我指向的是本地服务器和生产服务器之间的不同数据库。生产服务器指向的数据库落后了几个版本,因此服务器无法找到关系。如果您的问题局限于一个环境,请首先检查配置。