多是因爲Django使用的MySQLdb庫對Python3不支持,咱們用採用了PyMySQL庫來代替,致使出現各類坑,特別是執行如下2條命令的是時候:
python manage.py makemigrations or python manage.py inspectdb
報錯1:(提示你的mysqlclient版本太低),不管你是否執行pip install mysqlclient安裝的最新版的,都拋出:
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.3 or newer is required; you have 0.7.11.None
使用註釋大法解決:找到本身Python安裝路勁下的Python36-32\Lib\site-packages\django\db\backends\mysql\base.py文件 將文件中的以下代碼註釋(可能需先關閉pycharm IDE)python
if version < (1, 3, 3): raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % Database.__version__)
報錯2:(str類型沒有decode方法)
py3默認str是unicode編碼,經過encode方法編碼成bytes類型,後者纔有decode解碼方法。提示錯誤來源:Python36\lib\site-packages\django\db\backends\mysql\operations.py", line 149, in last_executed_querymysql
解決辦法: 1. 再報錯的Python36\lib\site-packages\django\db\backends\mysql\operations.py文件最上面添加 from django.utils.encoding import force_str 2. 將last_executed_query方法中以下代碼註釋 query = getattr(cursor, '_executed', None) if query is not None: query = query.decode(errors='replace') return query 3. 在註釋的代碼下添加以下代碼: return force_str(getattr(cursor, '_executed', None), errors='replace')
而後再次執行python manage.py makemigrations 成功