我將我的應用程式部署到 Heroku,但我無法添加任何資料。當我嘗試使用模型中的資料打開第一個表時,我收到此錯誤訊息:
ProgrammingError at /category/category_table
relation "tables_category" does not exist
LINE 1: SELECT COUNT(*) AS "__count" FROM "tables_category"
當我嘗試添加第一個資料時,我收到了以下錯誤訊息:
ProgrammingError at /admin/tables/category/add/
relation "tables_category" does not exist
LINE 1: INSERT INTO "tables_category" ("category_name") VALUES ('sho...
我在這里經歷了類似的問答,但它們并沒有解決我的問題,因為我有:
a) 從我的本地磁盤中洗掉所有遷移檔案,然后
b)我運行:python3 manage.py makemigrations
c)我運行:heroku run python3 manage.py migrate
所以一切都應該是最新的,我有 Heroku 的這個日志:
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions, tables
Running migrations:
No migrations to apply.
所以目前不知道該怎么辦。
uj5u.com熱心網友回復:
不要洗掉遷移
這里的第一步非常危險:
我已經...從我的本地磁盤中洗掉了所有遷移檔案
您生成的新遷移很可能無法在本地計算機上運行。他們將嘗試從空資料庫遷移到您當前的狀態,但是您(可能)已經在本地資料庫中擁有早期遷移的表甚至資料。
洗掉遷移幾乎從來都不是正確的答案。我知道每當您遇到遷移問題時,很多人都會推薦它,但他們錯了。在早期開發程序中丟棄您的資料庫可能感覺安全,但當您稍后擁有真實資料時,這絕對是不可取的。
我強烈建議您恢復舊的遷移檔案,然后在它們之上生成新的遷移。
生成和應用遷移
當你跑
python3 manage.py makemigrations
您在本地機器上生成新的遷移檔案。Heroku 不知道它們的存在,所以運行
heroku run python3 manage.py migrate
不會做任何事情。
在本地計算機上創建遷移后,通過運行在本地python manage.py migrate應用它們以確保它們執行應做的操作。當您對它們感到滿意時,提交檔案,重新部署到 Heroku,然后在 Heroku 上運行遷移。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/512624.html
