2025年6月29日日曜日

Django MySQLに移行

 DjangoをMySQLに対応させるには、以下の手順を行います。簡潔に、かつ確実に動くように整理しました。


✅ 手順一覧

① MySQLをインストール

すでにMySQLがインストール済みならスキップOKです。


Ubuntuの場合(例):

sudo apt install mysql-server


② Django用MySQLドライバをインストール(必須)


pip install mysqlclient

補足: mysqlclientは公式推奨。Cで書かれており高速。<br>

エラーが出る場合は以下のようなパッケージを先に入れる必要あり(Ubuntuの場合):

sudo apt install python3-dev default-libmysqlclient-dev build-essential

sudo apt-get install python3-dev default-libmysqlclient-dev build-essential pkg-config

(https://pypi.org/project/mysqlclient/)




③ MySQLにデータベースを作成

MySQLに入って、Django用のDBとユーザーを作る:


CREATE DATABASE mydb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';

GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost';

FLUSH PRIVILEGES;


④ Django設定ファイルを修正(settings.py)

DATABASES = {

    'default': {

        'ENGINE': 'django.db.backends.mysql',

        'NAME': 'mydb',

        'USER': 'myuser',

        'PASSWORD': 'mypassword',

        'HOST': 'localhost',

        'PORT': '3306',

        'OPTIONS': {

            'charset': 'utf8mb4',

            'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",

        },

    }

}


⑤ マイグレーションの実行(Django側)

python manage.py makemigrations

python manage.py migrate

🚨 注意点

mysqlclientがうまく入らない場合 → 代替で PyMySQL も使用可能(ただし非公式)


Windowsの場合、MySQL Connector/Cのインストールが必要になることがあります


utf8mb4 を使うことで絵文字なども保存可能(推奨)