使用Django + MySQL 来开发一个需要进行数据读写交互的网站.
首先设计自己的数据库, 在app中的models.py内定义表格,定义完表格之后需要在MySql中创建表格.
大家可以在Django官网和其它博客与网站上看到,基本上所有的信息都是在说实用 python manage.py makemigrations 和 python manage.py migrate就可以创建表了.
我遇到的问题是, 手动在数据库内更改过表或者删除了表之后,无法在Django 1.9.5上无法使用python manage.py makemigrations 和 python manage.py migrate重新创建数据库中的表格.
经过尝试和资料查询,发现Django是不会自动探索数据库内的数据表的, 所以你跳过Django手动操作数据库的情况, Django是不知道. 因此在使用Django的过程中, 尽量不要手动操作数据库. 也不要将sqlall语句和migrate语句混用了.
那么万一手动操作数据库之后又无法通过Django进行恢复怎么办?
第一个办法就是手动恢复数据库表, 估计没人愿意这么做 :)
第二个办法是通过Django 才操作, 我们需要做的是执行下面两条命令将所有的之前的migration作废:
python manage.py makemigrations
python manage.py migrate --fake
然后, 在执行重新执行一遍
python manage.py makemigrations yourAppName
python manage.py migrate yourAppName
这样就OK了.