解决方法
-
首先保存原有表结构的数据,以
mysql
为例:mysqldump -h localhost -u用户名 -p密码 数据库名 表名称 > mytable.sql
-
然后手动调整数据库,随便调整
-
将django中的model调整,对应好了(如果需要使用django的model对象的话,这里要对应好了,否则会在使用时报错)
-
安装并配置
django-extensions
到setting的app里:pip install django-extensions
-
清空django的migration,重新migrate:
首先
cd
到项目目录,然后运行:find . -path "*/migrations/*.py" -not -name "__init__.py" -delete find . -path "*/migrations/*.pyc" -delete python manage.py clear_cache
然后运行:
python manage.py makemigrations python manage.py migrate --fake
如果是针对特定的app,可以使用:
python manage.py makemigrations app名称 python manage.py migrate app名称 --fake
问题解析
使用命令:makemigrations
时,会在本地进行更新,这个一般都没问题
但是使用migrate
时,会在表django_migrations
中会生成记录,以记录所有的migrate
,生成表的时候就要命了,因此这里使用--fake
来虚假生成,使django更新到已有的makemigrations
,同时不会报错