开发过程中 models.py 中的模型经历一番爆改后,执行migrate就报错。干脆重新初始化。
操作步骤:
-
删除旧的数据库文件,重新创建。如果你是使用SQLite,删除后无需重新创建,Django在运行迁移时可以自动完成SQLite数据库创建。如果使用其他数据库,需要手动创建一个新的数据库。
-
删除迁移文件 :删除每个应用下的
migrations
文件夹中除了__init__.py
文件以外的所有文件。这一步是为了清除Django对旧数据库结构的迁移记录。import os exclude = ["venv"] # 需要排除的文件目录 for root, dirs, files in os.walk('.'): dirs[:] = [d for d in set(dirs) - set(exclude)] if 'migrations' in dirs: dir = dirs[dirs.index('migrations')] for root_a, dirs_a, files_a in os.walk(os.path.join(root, dir)): for file_b in files_a: if file_b != '__init__.py': dst_file = os.path.join(root_a, file_b) print('删除文件>>> ', dst_file) os.remove(dst_file)
-
执行 重建数据库并初始化的命令:
# 依次执行 python manage.py flush python manage.py makemigrations python manage.py migrate