最近新建項目,想測一下Django的最新的版本,在集成Mysql的時候,安裝pymysql,會遇到這個問題。(django.core.exceptions.ImporoperLyConfigured:mysqlclient1.3.13 or newer is required; you have 0.9.3)
測試新版本的不少人都遇到這個問題。
出現問題的緣由是 Django2.x以後不在支持python2了,而原來集成mysql的mysqlclient不支持python3。有一段時間,想用python3在Django中寫代碼,都是用了另外一個包pymysql。它簡單替換了mysqlclient。python
import pymysql pymysql.install_as_MySQLdb()
可是在Django2.2的時候對mysqlclient的版本作了校驗,必須高於1.3.13,而pymysql版本是0.9.3。網上不少的方法都是說直接把Django校驗版本的那兩行代碼註釋掉就能跑。這種作法很蠢,特別的蠢。mysql
首先,Django不會閒着無聊就加這個校驗,必定有其餘的緣由。你註釋掉如今能跑了,後面出了更麻煩的問題你怎麼解決?在解決一個已知問題時,引入N個不肯定的問題?其次,你若是要把項目產品化怎麼辦?每次更新後手動去改代碼??你跑Docker跑runner怎麼處理?最後,即使你是本身調試,也是有問題的。這是一個工程問題,若是你處理一個你解決不了的問題時,思路不是用成熟的方案繞過去,而是註釋掉報錯的地方,你以爲很geek?這不是掩耳盜鈴?git
至於爲何會校驗,在github上有一個回答,https://github.com/PyMySQL/Py...github
mysqlclient returns bytes object PyMySQL returns str object
解決方案:1.將Django回退到支持pymysql的Django2.1.4版本。2.使用postgres或者其餘數據庫替代mysqlsql