在使用 Django2.0 做项目的时候,改了数据表一些字段,想删除后重新使用
python3 manage.py makemigrations
python3 manage.py migrate
生成新的数据表,结果就出现了以下问题:
一、migrate 没有新生成数据表
1、删除 app 目录下的数据库文件和缓存文件
rm -r migrations/ __pycache__/
2、执行 makemigrations 没有问题,但是执行 migrate 时,显示 No migrations to apply,没有新生成数据表。
3、在 django_migrations 这张表里面,记录这有关创建表的记录,删除对应的数据表在执行 migrate,数据表顺利生成。
在执行 python3 manage.py makemigrations 时,在 app migrations 目录下生成对应 SQL 语句的 000*_initial.py 数据文件。
在执行 python3 manage.py migrate 时,不仅会创建 000*_initial.py 对应的数据文件,还会将这条记录数添加到据库库中。如果想重新生成数据库,需要两个地方都做删除。
二、migrate 时报错
1、把 migrations 中数据文件删除
2、删除 django_migrations 表中数据
3、重新使用 makemigrations 和 migrate 发现报错
2、经过排查,数据库中没有把旧表删除,删除后重新执行 makemigrations 和 migrate 就能成功的生成新数据表