1、ゲスト/ settings.pyで追加
pymysql輸入 pymysql.install_as_MySQLdb()
インストール済みpymysql
2、データベースは、以下のパラメータのゲスト/ settings.pyを設定します
= {DATABASES 'デフォルト':{ 'ENGINE': 'django.db.backends.mysql'、 'HOST': 'データベースIP'、 'PORT': 'データベースポート'、 'NAME': 'データベース名'、 "ユーザー':'のmSQLユーザ名' 'パスワード':' MySQLのパスワード'、 ' OPTIONS '{ ' init_command ':「SET = sql_modeの' STRICT_TRANS_TABLES ' "、 } } }
3、問題のリストの出現
あるmysqlclient 1.3.13以降が必要です。ImproperlyConfigured
1、背景の問題:
:既にインストールpymysqlが、コマンドラインのpython3は、データ移行タイムズに次のエラーを移行manage.pyの
(もちろん、あなたが他の操作を実行することができるとき)同様のエラーが発生しました
......
import_moduleでファイル"/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/importlib/__init__.py"、ライン127、
リターン_bootstrap._gcd_import(名[レベル:]、パッケージ、レベル)
」ファイルで/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/db/backends/mysql/base.py」、36行目、<Module1の>
ImproperlyConfigured昇給(「はmysqlclient 1.3。以降は13を必要とする、あなたは%S「データベース%.__ version__を持ってい)。
django.core.exceptions.ImproperlyConfigured:あるmysqlclient 1.3.13以降が必要です。あなたは0.9.3を持っています。
最後の2行を求められたら、あるmysqlclientバージョンは十分ではありません新しいが、私はそれの最新バージョンがインストールされています。
2、問題の原因
PyMySQLローカルドライブがインストールされているが、それでも、デフォルトの接続のMySQLdb駆動DjangoのMySQLを使用しますが、MySQLdbはのpython3をサポートしていませんので、手動でプロジェクトを設定する必要が。
プロジェクトのルートディレクトリに__init__.pyファイルに次のコードを追加します。
pymysqlインポート
pymysql.install_as_MySQLdb()
1
2は、
再度コマンドを実行して、エラーになります、それは問題ではないが、三行目は、あなたのパスのヒントに基づいて、報告書の第36行に間違っbase.pyある告げ、詳しく見て与えられていますライン35が先行オープンbase.py、36#は次のように、うまくコメントアウト:
バージョン= Database.version_info 34は、
バージョン<(1 ,. 3、13である)の#if 35:
36#ImproperlyConfigured昇給( 'はmysqlclient 1.3.13以降が必要です。%Sはあなたを持っている。' %データベース.__ version__)
今、再度コマンドを実行します上記のエラーは消えたが、新しいエラーを持っている、以下のそれを解決する方法を参照してください。
AttributeError:「str」はオブジェクトが持っていない属性「復号」
彼は次のようなエラーが発生した後、上記の問題を解決するために:
last_executed_queryでファイル"/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django/db/backends/mysql/operations.py"、ライン146、
クエリ= query.decode(エラー=「置き換える」)
はAttributeError:「str」はオブジェクトの属性がありません「復号」がありません
プロンプトプロパティのエラー:「STR」オブジェクトは、「デコード」属性はありません。
問題の原因があるのpython3中のもの:
エンコードによってSTR()バイトに変換
(デコードによりバイト)STRに変換する
と言うことである。のみ()メソッドをコードSTRのみ復号()メソッドをバイト!
この推定はジャンゴのバグです。
解決策:ファイルoperations.pyを開くように求められたら与えられています
次のようにデコードにコードすることが見出さライン146:
140 DEFのlast_executed_query(セルフ、カーソル、SQL、paramsは):
141のMySQLdbと#で、カーソルオブジェクト(時には文書化されていないと呼ばれる)AN「は_executed」がき
142#正確な属性を。データベースクエリが保存されるために送られた
143#を参照のMySQLdbは/がでソースディストリビューションのcursors.py。
144クエリ= GETATTR(カーソル、 '_executed'、なし)
145なしではありませんクエリIF:
146クエリ= query.encode(エラー=エンコードするために変更され復号化するためにここに)「を置換」#
147リターンクエリ
再度コマンドを実行し、この場合は、設定が完了し、エラーではありません!