由于django的项目不是新建的,之前执行过
python manage.py makemigrations
python manage.py migrate
的语句。
(1)所以当我再次在mysql数据库中建立新的数据库时,执行上面的两句时,并没有什么卵用!!!只建立了下面几个表格
| blog_blog |
| blog_blog_tag |
| blog_category |
| blog_comment |
| blog_tag |
(2)查阅了网上的资料,说删除app文件夹中的migrations中的所有文件,但是也只能在数据库中建立除了第(1)步中的数据表的表
+---------------------------------+
| Tables_in_myblog_master_v4_temp |
+---------------------------------+
| auth_group |
| auth_group_permissions |
| auth_permission |
| auth_user |
| auth_user_groups |
| auth_user_user_permissions |
| django_admin_log |
| django_content_type |
| django_migrations |
| django_session |
+---------------------------------+
由上面看得出,没有models.py中对应的表。
(2)因为上面执行python manage.py makemigrations时,没有检测到什么,所以我用了比较笨的方法,首先把models.py的每个字段名字都修改,执行一遍python manage.py makemigrations appname,再把models.py的每个字段的名字改回来自己需要的,再删除掉app中的migrations文件夹中的文件,执行一次python manage.py makemigrations apname和python manage.py migrate。之后mysql数据库中的表就都有了。
+---------------------------------+
| Tables_in_myblog_master_v4_temp |
+---------------------------------+
| auth_group |
| auth_group_permissions |
| auth_permission |
| auth_user |
| auth_user_groups |
| auth_user_user_permissions |
| blog_blog |
| blog_blog_tag |
| blog_category |
| blog_comment |
| blog_tag |
| django_admin_log |
| django_content_type |
| django_migrations |
| django_session |
+---------------------------------+
如果需要导入已有的数据,应该先python manage.py migrate创建新的数据表,再导入已有的数据才行。如果顺序倒过来就会在python manage.py migrate时报错!!!
导入数据迁移的方法:
(1)从mysql数据库导出数据(在ubuntu命令行输入):mysqldump -uroot -p myblog_master_v4 > myblog.sql
(2)进入mysql数据库命令行,use 对应数据库
(3)source myblog.sql的路径
原因:
之所以会碰到这个问题,是一开始我的mysql数据库里面对应的数据库只有
| blog_blog |
| blog_blog_tag |
| blog_category |
| blog_comment |
| blog_tag |
这几个表,所以登录admin后台时就不成功(我是用apache服务器代替了开发服务器,登录网址为192.168.1.108/admin),只有换回开发服务器才能成功登录admin后台。所以我把对应app下的migrations文件夹中的文件全部删除了,但是就出现了上面的问题。