簡體   English   中英

Django遷移:不存在關系

[英]Django migrations: relation does not exist

我的開發服務器上有一個工作站點和數據庫,我正在嘗試在實時服務器上進行設置。 我正在執行以下操作:

  • Git將存儲庫從開發服務器克隆到實時服務器
  • 在實時服務器(Posgres)上創建空數據庫
  • 更新實時服務器上所有相關數據庫等設置的settings.py
  • 刪除所有遷移文件/文件夾並刪除所有* .pyc文件
  • python manage.py makemigrations

我收到錯誤: django.db.utils.ProgrammingError: relation "myapp_mytable" does not exist

我似乎無法進行初始遷移。 我發現的唯一解決方案是進入我的settings.py文件並注釋掉INSTALLED_APPS所有應用程序,並進入我的主urls.py文件並注釋掉所有URL。

在注釋掉那些部分之后,我就可以進行初始遷移了。 之后,我可以取消注釋我的應用程序,並開始一個一個地遷移它們,即: python manage.py makemigrations appname然后python manage.py migrate python manage.py makemigrations appname

因此,我有一個解決方法,但這遠非理想。 當然,有一種方法可以告訴django,我已經創建了一個全新的空數據庫,因此它需要首先進行初始遷移。 我使用Ansible使服務器設置自動化,因此要求我執行所有此手動注釋/取消注釋操作和多次遷移是不好的。

更新:

根據評論,我不認為要刪除遷移。 因此,我在開發服務器上進行了以下嘗試來嘗試重新創建它們: link 但是,即使我現在有已復制到實時服務器的遷移文件,當我嘗試運行它們時,也會遇到與上述相同的錯誤。

我已經閱讀了遷移文件,但看不到任何有關創建初始遷移/數據庫架構的內容。 它僅提及創建我的應用程序模型。 我似乎無法弄清楚在完成應用程序遷移之前如何進行初始遷移。 我需要以某種方式重新創建所有遷移文件(包括創建初始數據庫模式),以便它們可以在服務器上運行。

我最終在@Daniel Roseman的評論中找到了問題。 我正在執行以下操作:

list(Correlation().get_entries())

這是在創建一個模型實例(即:Correlation)並針對此實例調用get_entries()方法。 然后,我將其包圍在list()中。 由於某種原因,這阻止了遷移工作。 我刪除了沒有必要的list(),現在一切正常。

暫無
暫無

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

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