簡體   English   中英

django.db.utils.OperationalError:沒有這樣的表:blog_category

[英]django.db.utils.OperationalError: no such table: blog_category

當我嘗試運行python3 manage.py makemigrationspython3 manage.py migrate時,我不斷收到錯誤消息

我檢查了很多帖子,他們都說要運行python3 manage.py makemigrations和 python3 manage.py migrate甚至是python3 manage.py migrate --run-syncdb但問題是當我運行這些時我得到了這個錯誤命令以及當我運行python3 manage.py runserver時:

return Database.Cursor.execute(self, query, params)
    django.db.utils.OperationalError: no such table: blog_category

另一個問題是我沒有任何代碼說blog_category所以我什至不知道 django 是從哪里得到的。 我嘗試了不同的 venv 來查看其他已安裝的程序是否有問題,但錯誤仍然存​​在。 請幫忙。

我也有這個問題。 即使在手動刪除遷移后,我也無法進行新的遷移。 我注意到我的 db.sqlite3 文件在從 github 分叉我的項目后變成了一個文本文件。

以下是您可以執行的操作:

  • 確保項目根文件夾中的 db.sqlite3 文件具有擴展名“.sqlite3”,不應沒有文件擴展名。 還要確保它不是一個空文件 (0 KB)。

您應該無法打開 db 文件並看到以下內容: 在此處輸入圖像描述

這不是應該的。 解決此類問題的方法是從另一個項目復制 db.sqlite3 文件(否則它將繼續生成錯誤的文件)。 然后對 admin.py 或 models.py 進行一些更改,以便數據庫意識到它需要做一些事情(進行遷移),然后幸運的是 - 您現在應該能夠進行遷移(python manage.py makemigrations)。

如果以上不提供解決方案,您可以通過以下方式完全重置數據庫:

    python manage.py flush  

再次創建超級用戶並進行任何必要的遷移:

    python manage.py createsuperuser
    python manage.py makemigrations
    python manage.py migrate

確保您的項目中沒有活動代碼會嘗試從不再存在的數據庫表中查詢數據也很重要。 意識到您現在有一個空數據庫。

如果我在項目中運行的代碼會嘗試從過去曾經存在的數據庫 object 中檢索數據,例如:

 p = Category.objects.get(title=flower_type)

 print(p.flower_set.first())
 print(p.flower_set.last())

這會導致問題,因為沒有數據庫條目,也沒有要查詢的數據。 這是需要注意的事情。

暫無
暫無

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

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