在 Django 中重置遷移

Vaibhav Vaibhav 2023年1月30日 2021年6月29日
  1. 在 Django 中重置整個資料庫
  2. 將 Django 應用程式恢復到其舊遷移
在 Django 中重置遷移

在使用資料庫時,我們經常不得不重置資料庫,因為我們用無用的資料填充它。有時,我們甚至會根據容易出錯的資料庫架構來設定資料庫。有時,我們甚至會改變業務邏輯,從而調整整個資料庫設計。這些情況在電腦科學領域很常見,並且已經構建了一些很好的工具和命令來處理它們。

在 Django 中,如果我們最終遇到任何此類情況,我們必須重置遷移和資料庫。重置遷移時,列表中有幾個選項。

  1. 重置整個資料庫
  2. 將 Django 應用恢復到一些舊的遷移

在 Django 中重置整個資料庫

當我們必須在 Django 中重置整個資料庫時,列表中有幾個選項。

  1. 如果我們使用 Django 的預設 SQLite 資料庫,我們可以刪除資料庫檔案 db.sqlite3,然後刪除所有應用程式中的所有 migrations 資料夾。刪除 migrations 資料夾後,我們可以重新進行遷移並使用兩個命令遷移它們;即,python manage.py makemigrationspython manage.py migrate
  2. 如果我們使用的是其他一些關聯式資料庫,例如 PostgreSQL 或 MySQL,我們可以使用資料庫管理工具(例如 pgAdminDBeaver 等)或使用命令列手動刪除所有表。或者,我們可以建立一個全新的資料庫,然後將其連線到我們的 Django 專案。請注意,對於這兩種情況,首先應刪除所有 migrations 資料夾,然後重新進行遷移,最後再遷移它們。
  3. 另一種選擇是使用 Django 的 manage.py 命令為我們清除整個資料庫。命令是 python manage.py flush。同樣,在使用此命令後,我們必須刪除所有 migrations 資料夾,然後進行新的遷移。

將 Django 應用程式恢復到其舊遷移

如果我們不必重置整個資料庫而是回滾特定 Django 應用程式的遷移,我們有兩種選擇。首先,我們可以將 Django 應用程式的當前遷移反向到一些舊遷移。其次,我們可以重置 Django 應用程式的所有遷移。

如果我們必須從最新的遷移(例如 0014)遷移回舊的遷移(例如 0008),我們可以使用以下命令。

python manage.py migrate AppName 0008
            --- OR ---
python manage.py migrate AppName 0008_migration_name

而且,如果我們必須重置 Django 應用程式的所有遷移,我們可以使用以下命令。

python manage.py migrate AppName zero

請注意,有時遷移可能是不可逆的。通常,當對 Django 模型進行了一些重大更改時,就會出現這種情況。當我們嘗試恢復到這樣的遷移時,Django 會引發一個 IrreversibleError

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

LinkedIn GitHub

相關文章 - Django Migration