重置Django migration的常見方式

2021-09-14 08:33:56 字數 1228 閱讀 9527

根據django官方文件建議,開發過程中會把生成的migrations提交到git中。由於各種原因,會有一些場景需要重置migrations,故總結一些常用場景及解決辦法。

不考慮資料庫資料,可以完全清空資料庫。

步驟:

刪除所有migrations

find . -path "*/migrations/*.py" -not -name "__init__.py" -delete

find . -path "*/migrations/*.pyc" -delete

刪除資料庫

重新生成migrations

python manage.py makemigrations

python manage.py migrate

有時候我們會直接匯入完整的資料庫,包括資料,這種情況下就不能簡單的清空資料庫。

這時我們的目的就是:清空資料庫的migration history,保證以後的migrate能正常使用,但要保留其他資料。

步驟:

從資料庫中刪除所有非0001_initial的migration history

使用migrate命令回滾0001_initial的migration history

python manage.py migrate --fake your zero

python manage.py migrate --fake labels zero

重新生成0001_initial,如果能保證已有0001_initial已是最新的,可跳過此步

find . -path "*/migrations/*.py" -not -name "__init__.py" -delete

find . -path "*/migrations/*.pyc" -delete

python manage.py makemigrations

在資料庫中生成新的0001_initial記錄

python migrate --fake-initial

重置mysql 密碼 mysql重置密碼

ubuntu下重置mysql的root密碼 sudo vi etc mysql my.cnf,在 mysqld 段中加入一行 skip grant tables sudo service mysql restart,重啟mysql服務 sudo mysql u root p mysql,用空密碼進入...

mysql id重置密碼 mysql 重置密碼

mysql 重置密碼 版本5.7之前 1 修改mysql配置檔案 vi etc my.cnf 注 windows下修改的是my.ini 在 mysqld 後面任意一行新增 skip grant tables 用來跳過密碼驗證的過程。重啟mysql 2 進入mysql root localhost m...

mysql 重置密碼 mysql 重置密碼

mysql 重置密碼 版本5.7之前 1 修改mysql配置檔案 vi etc my.cnf 注 windows下修改的是my.ini 在 mysqld 後面任意一行新增 skip grant tables 用來跳過密碼驗證的過程。重啟mysql 2 進入mysql root localhost m...