ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
エラーの全文
Traceback (most recent call last):
File "manage.py", line 22, in <module>
main()
...
File "/usr/lib/python3.10/site-packages/django/db/backends/mysql/base.py", line 15, in <module>
import MySQLdb as Database
ModuleNotFoundError: No module named 'MySQLdb'
原因
Django の django.db.backends.mysql ドライバは内部で import MySQLdb しています。しかし MySQLdb は Python 2 時代のパッケージ名で、現在は次のどちらかが提供する必要があります:
| パッケージ | 実体 | 長所 | 短所 |
|---|---|---|---|
| mysqlclient | libmysqlclient の C 拡張 | 高速・Django 公式推奨 | C コンパイラと開発ヘッダ必要 |
| PyMySQL | 純 Python 実装 | pip だけで入る | 性能劣・SSL 制限あり |
| mysql-connector-python | Oracle 公式 | 純 Python | Django が公式対応していない場合あり |
対処A: mysqlclient をインストール(推奨)
# 仮想環境を有効化してから
source venv/bin/activate
# インストール
pip install mysqlclient
# 確認
python -c "import MySQLdb; print(MySQLdb.__version__)"
# 2.2.0
ビルドエラーが出る場合の OS 別対応:
# Ubuntu / Debian
sudo apt update
sudo apt install python3-dev default-libmysqlclient-dev build-essential pkg-config
# CentOS / RHEL / Rocky Linux
sudo yum install python3-devel mysql-devel gcc
# Fedora
sudo dnf install python3-devel mysql-devel gcc
# macOS(Homebrew)
brew install mysql-client pkg-config
export PKG_CONFIG_PATH="/opt/homebrew/opt/mysql-client/lib/pkgconfig"
# Apple Silicon の場合
export LDFLAGS="-L/opt/homebrew/opt/mysql-client/lib"
export CPPFLAGS="-I/opt/homebrew/opt/mysql-client/include"
# Windows
# wheel が公式に提供されているのでビルド不要
pip install mysqlclient
# 失敗するなら https://www.lfd.uci.edu/~gohlke/pythonlibs/ から wheel をダウンロード
対処B: PyMySQL を MySQLdb の代わりに使う
コンパイラを入れたくない場合、PyMySQL を「MySQLdb のフリ」をさせます:
pip install PyMySQL# myproject/__init__.py(settings.py と同じ階層)
import pymysql
pymysql.install_as_MySQLdb()
これで Django から import MySQLdb しても PyMySQL が応答します。
注意: Django 4.0+ では PyMySQL のバージョンチェックで弾かれることがあります。その場合は:
# myproject/__init__.py
import pymysql
# Django のバージョンチェックを欺くため version_info を上書き
pymysql.version_info = (1, 4, 6, 'final', 0)
pymysql.install_as_MySQLdb()
settings.py の DATABASES 設定例
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mydb',
'USER': 'myuser',
'PASSWORD': 'mypass',
'HOST': '127.0.0.1',
'PORT': '3306',
'OPTIONS': {
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
'charset': 'utf8mb4',
},
'CONN_MAX_AGE': 60,
}
}
requirements.txt への記載
# mysqlclient を使う場合(推奨)
Django>=4.2,<5.0
mysqlclient>=2.2.0
# PyMySQL を使う場合
Django>=4.2,<5.0
PyMySQL>=1.1.0
cryptography>=41.0.0 # PyMySQL で SSL/caching_sha2_password を使うなら必須
動作確認
# Python から接続テスト
python manage.py shell
>>> from django.db import connection
>>> connection.ensure_connection()
>>> print(connection.connection)
<MySQLdb.connections.Connection object at 0x...>
# マイグレーション実行
python manage.py migrate
# 接続情報表示
python manage.py dbshell
FAQ
Q: mysqlclient と PyMySQL どちらを選ぶ?
A: 本番ならmysqlclient。CI / Docker でビルド時間を惜しむなら PyMySQL。Django 公式ドキュメントは mysqlclient を推奨しています。
Q: caching_sha2_password エラーが出る
A: MySQL 8 のデフォルト認証方式。PyMySQL なら pip install cryptography も必須。mysqlclient なら標準対応。
Q: Docker で mysqlclient のビルドが遅い
A: マルチステージビルドにする、または FROM python:3.11-bookworm を使い apt install でヘッダを入れる。Alpine は apk add mariadb-dev。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- Invalid HTTP_HOST header: '...'. You may need to add '...' to ALLOWED_HOSTS
- CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False.
- django.utils.datastructures.MultiValueDictKeyError
- Forbidden (403) CSRF verification failed. Request aborted.
- ModuleNotFoundError: No module named 'MySQLdb'
- WARNINGS: ?: (mysql.W002) MySQL Strict Mode is not set for database connection
- Unknown column 'table_name.id' in 'field list'
- RuntimeError: Model class ~ doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.
- get() returned more than one MynumberRegist -- it returned 2!
- django.db.utils.OperationalError: (2006, "Can't connect to MySQL server")
- 'include' is not defined
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?