django.core.exceptions.ImproperlyConfigured: MySQLdb モジュールの読み込みに失敗しました。
I. エラー
Traceback (most recent call last):
File "/home/ubuntu/anaconda2/envs/python3/lib/python3.6/site-packages/django/db/backends/mysql/base.py", line 15, in < module>
import MySQLdb as Database
ModuleNotFoundError: No module named 'MySQLdb'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "manage.py", line 15, in <module>
execute_from_command_line(sys.argv)
File "/home/ubuntu/anaconda2/envs/python3/lib/python3.6/site-packages/django/core/management/__init__.py", line 371, in execute_from_command_line
utility.execute()
File "/home/ubuntu/anaconda2/envs/python3/lib/python3.6/site-packages/django/core/management/__init__.py", line 347, in execute
django.setup()
File "/home/ubuntu/anaconda2/envs/python3/lib/python3.6/site-packages/django/__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "/home/ubuntu/anaconda2/envs/python3/lib/python3.6/site-packages/django/apps/registry.py", line 112, in populate
app_config.import_models()
File "/home/ubuntu/anaconda2/envs/python3/lib/python3.6/site-packages/django/apps/config.py", line 198, in import_models
self.models_module = import_module(models_module_name)
File "/home/ubuntu/anaconda2/envs/python3/lib/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "
"
, line 994, in _gcd_import
File "
"
, line 971, in _find_and_load
File "
"
, line 955, in _find_and_load_unlocked
File "
"
, line 665, in _load_unlocked
File "
"
, line 678, in exec_module
File "
"
, line 219, in _call_with_frames_removed
File "/home/ubuntu/anaconda2/envs/python3/lib/python3.6/site-packages/django/contrib/auth/models.py", line 2, in <module& gt;
from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager
File "/home/ubuntu/anaconda2/envs/python3/lib/python3.6/site-packages/django/contrib/auth/base_user.py", line 47, in < module>
class AbstractBaseUser(models.Model):
File "/home/ubuntu/anaconda2/envs/python3/lib/python3.6/site-packages/django/db/models/base.py", line 114, in __new__
new_class.add_to_class('_meta', Options(meta, app_label))
File "/home/ubuntu/anaconda2/envs/python3/lib/python3.6/site-packages/django/db/models/base.py", line 315, in add_to_class
value.attribute_to_class(cls, name)
File "/home/ubuntu/anaconda2/envs/python3/lib/python3.6/site-packages/django/db/models/options.py", line 205, in contribute_to_class to_class
self.db_table = truncate_name(self.db_table, connection.ops.max_name_length())
File "/home/ubuntu/anaconda2/envs/python3/lib/python3.6/site-packages/django/db/__init__.py", line 33, in __getattr__
return getattr(CONNECTIONS[DEFAULT_DB_ALIAS], item)
File "/home/ubuntu/anaconda2/envs/python3/lib/python3.6/site-packages/django/db/utils.py", line 202, in __getitem__
backend = load_backend(db['ENGINE'])
File "/home/ubuntu/anaconda2/envs/python3/lib/python3.6/site-packages/django/db/utils.py", line 110, in load_backend
return import_module('%s.base' % backend_name)
File "/home/ubuntu/anaconda2/envs/python3/lib/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "/home/ubuntu/anaconda2/envs/python3/lib/python3.6/site-packages/django/db/backends/mysql/base.py", line 20, in < module>
) from err
ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?
II. 問題解決
1. 問題の発生源
Django インストール後のデフォルトのデータベースドライバは sqlite で、私は sqlite データベースを持っていないので、これを次のように変更します。
mysqlは、ディレクトリfirst/first/settings.pyに移動して探します。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
に修正されました。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'first',
'USER': 'python',
'PASSWORD': '123456',
'HOST': '192.168.99.124',
# 'PORT': '',
}
}
コマンドを実行する
python manage.py runserver
サービスを起動すると、以下のエラーが報告されます。
django.core.exceptions.ImproperlyConfigured: MySQLdb モジュールの読み込みに失敗しました。MySQLdb という名前のモジュールはありません
2. 解決
明らかにmysqlのドライバがインストールされていないので、インストールしただけなので、早速、コマンドラインで以下のコマンドを打ち込みました。
pip install mysql-python
ダウンロード、インストール後、別のエラーが報告されました。ImportError: ConfigParser'という名前のモジュールがありません。
理由 Python3.xはpython2.xと比較してConfigParserが全て小文字に変更されているため、pipに含まれるmysql-pythonはpython3.xをサポートしていない。pipの更新が遅いのか、彼らのソースコードをダウンロードしてインストールしてみることにしよう。python3.xに対応してない!?
これはどうしたらいいのでしょうか?そこで、githubで検索してみると、PyMySQL( https://github.com/PyMySQL/PyMySQL )、もちろんpipにも入っているので、早速またコマンドラインで打ち込みました。
pip install PyMySQL
インストールは非常にスムーズに行われましたが、Djangoは外国の僧侶を認識しませんでした。 イニット .pyに以下を入力し、保存してください。
import pymysql
pymysql.install_as_MySQLdb()
そして、もう一度 python manage.py runserver を実行すると、別のプロンプトが表示されます。
python manage.py migrate' を実行して適用してください。
もちろん、このプロンプトは自前でホストしているサーバーには影響しない。 http://127.0.0.1:8000 という成功のメッセージが表示されます。
It worked!
Congratulations on your first Django-powered page.
Of course, you haven't actually done any work yet. Next, start your first app by running python manage.py startapp [app_label].
You're seeing this message because you have DEBUG = True in your Django settings file and you haven't configured any URLs.
もちろん、警告メッセージは気に入らないし、どうすれば直るかも教えてくれたので、対処することにしましたよ。早速、以下をコマンドラインにコピーしてみました。
python manage.py makemigrations
python manage.py migrate
その後、サービスを再起動すればOK!
環境について
- Pythonバージョン:3.6.0
- Django バージョン: 2.5
関連
-
[解決済み] Django: OperationalError そのようなテーブルがない
-
[解決済み] 例外です。リクエストのデータストリームから読み込んだ後、ボディにアクセスすることはできません。
-
[解決済み] django Forms のラジオボタン
-
[解決済み] Django - 円形モデルのインポートの問題
-
[解決済み] CSRFに失敗しました。CSRFトークンがないか不正確です
-
[解決済み] django 上書きフォームクリーンメソッド
-
[解決済み] Django は RuntimeError で動作を停止します: populate() は reentrant ではありません。
-
[解決済み] 2つのフィールド「unique」をカップルとして定義する方法
-
Pythonが表示される。TypeError: 期待される文字列またはバッファ
-
django upstream が up からの応答ヘッダを読み込む際に接続を早々に切断してしまう。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [Solved] models.py に追加した後、「NOT NULL 制約が失敗しました。
-
[解決済み】コマンド 'git' が見つからない - windows
-
[解決済み] Django: 基数が 10 の int() のリテラルが無効です。
-
[解決済み] djangoでDISTINCT個々の列を選択しますか?
-
[解決済み] NoReverseMatch at /
-
[解決済み] Django Programmingのエラーカラムが、マイグレーションを実行しても存在しない。
-
[解決済み] ImportError: rest_framework_jwt.viewsという名前のモジュールがありません。
-
[解決済み] boto.exception.S3ResponseError.S3ResponseError。S3ResponseError: 403 Forbidden
-
[解決済み] Django manage.py ランサーバーが動作しない
-
django -- django.core.exceptions.AppRegistryNotReady: アプリはまだロードされていません。