您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

pycharm社区版解决django的mysql的兼容问题

bubuko 2022/1/25 20:00:35 mysql 字数 2357 阅读 619 来源 http://www.bubuko.com/infolist-5-1.html

我电脑上面的MySQL是5.5.6,而刚开始安装的django版本是3.多,不支持现在MySQL的版本 解决方案是: https://yuntianti.com/posts/fix-django3-mysqlclient-import-error/ 下面进入正题:安装Django3后不想折腾mysq ...

我电脑上面的MySQL是5.5.6,而刚开始安装的django版本是3.多,不支持现在MySQL的版本

解决方案是:

https://yuntianti.com/posts/fix-django3-mysqlclient-import-error/

下面进入正题:
安装Django3后不想折腾mysqlclient那堆库文件,直接装了pymysql替代mysqlclient。还是老办法,__init__.py 中patch一下:

import pymysql
pymysql.install_as_MySQLdb()

启动项目出现以下异常:

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.

看来是Django3对mysqlclient的要求提高了: 1.3.13. 但pymysql的版本没有跟上。
看了下tracelog指向的异常抛出处的代码, 发现如下代码片段:

技术分享图片

 

 果然是有个版本判断并raise了异常,而且校验的是Database库的version_info属性。
那pymysql中的version_onfo属性是怎么返回的呢?找到pymysql源码,发现如下片段:

技术分享图片

 

 

实际上pymysql版本号是 0.9.3,却明目张胆篡改version_info欺骗Django??。这样一来就简单了,patch一下这个属性就行了嘛, 修改__init__.py,多插入一行代码:
import pymysql
pymysql.version_info = (1, 3, 13, "final", 0)
pymysql.install_as_MySQLdb()
然后迁移之后会出现下面的错误:

django.db.migrations.exceptions.MigrationSchemaMissing: Unable to create the django_migrations table ((1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘(6) NOT NULL)‘ at line 1"))

解决方案是:
https://www.cnblogs.com/yebaofang/p/9863678.html
完美解决

pycharm社区版解决django的mysql的兼容问题

原文:https://www.cnblogs.com/tom-Lu/p/12623931.html


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶