您当前的位置:首页 > 计算机 > 编程开发 > Python

关于Django无法同步数据库及数据表的解决办法

时间:06-21来源:作者:点击数:

问题情景:

遇到一个Django项目,是一个数据展示的界面,类似商品展示

需求:

需要加上登录和注册功能

进展:

在models文件中新增user表后,执行以下两条命令皆无任何响应。

1 python manage.py makemigrations
2 python manage.py migrate

随后查阅相关资料和官方文档找到解决办法,在此之前,简短描述下问题的起因经过。

1.在项目目录中以及app层目录下,即/project/templates和/project/templates、/project/__pycache__三个文件中记录着关于Django对数据库中的操作记录

2.当需要对数据库进行相关更改的情况下,此三个文件夹会有相关记录,例如第一遍执行了上面两条语句,顺利创建了表,后续又删除了表,此中记录并不会被删除,当执行第一条语句的情况下,Django查阅三个文件中的记录以后,发现已经执行了相关操作,也就并不会继续创建表。

在这里并不列举亲测过并不成功的方法,以下按照顺序执行,即可解决问题:

1.在数据库中的目标表存在的情况下,应当删除这些目标表,比如需要对user表进行更改,那么先删除user表,如果需要对data表进行更改,便删除user表,以此类推。

2.删除在项目目录中以及app层目录下,即/project/templates和/project/templates、/project/__pycache__三个文件,如果是文件夹,直接删除文件夹,如果是文件,直接删除文件。

比如  ../项目/  和  ../项目/app01  这样的路径.

上述两步执行完毕后执行下面三条语句:

1 # 此命令用于制作一个空的迁移文件(Django会将文件放在正确的位置,提供一个名称,并为您添加依赖项)
2 python manage.py makemigrations --empty 你的app名
3 python manage.py makemigrations
4 python manage.py migrate

即可完成models中数据库变更操作。

1、raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)

   django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.

解决办法:C:\Python37\Lib\site-packages\django\db\backends\mysql(python安装目录)打开base.py,注释掉以下内容:

       if version < (1, 3, 13):

          raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)

2、File "C:\Python37\lib\site-packages\django\db\backends\mysql\operations.py", line 146, in last_executed_query

query = query.decode(errors='replace')

  AttributeError: 'str' object has no attribute 'decode'

解决办法:打开此文件把146行的decode修改为encode

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门