Django+mysql项目启动时的几个错误

在python3环境下,使用Django链接mysql,在settings.py中配置好各个设置项后执行python manage.py migrate,出现了以下错误:
1.
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb',
主要是python2使用mysqldb,python3使用pymysql,所以在使用pymysql时就有问题了,解决:
在init.py中写

import pymysql
pymysql.install_as_MySQLdb()

重新执行python manage.py migrate,又有错:

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

虽然版本最新,但还是报错,解决:在异常传播途径的最后一条点进去base.py,注释掉35,36行,即

34 version = Database.version_info
 35 #if version < (1, 3, 13):
 36 #    raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you     have %s.' % Database.__version__)
 37 

重新执行python manage.py migrate,又有错:
3.

django.db.utils.OperationalError: (1045, "Access denied for user 
'root'@'localhost' (using password: NO)"),

很神奇的错误,在overstackflow上看到一个解决办法:地址
但是该方法不适用我的错误,因为在数据库中执行:show grants for 'root'@'localhost'\G;,可以看到我已经设置过了,最后在settings.py的databases上面的注释中打开了官方文档,发现人家所有的key都是大写的,我的配置中出现了小写,这个有影响??改成大写,还真有。
在这里插入图片描述
重新执行python manage.py migrate,还是有错:
4.

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

打开异常传播的最后一个文件operations.py,将144行开始的decode换成encode

query = getattr(cursor, '_executed', None)
        if query is not None:
            query = query.decode(errors='replace')   ----》encode
        return query

执行完成

以上问题的解决参考了很多资料,这里不一一列举,感谢分享

发布了87 篇原创文章 · 获赞 50 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_40178464/article/details/100773686