「対応」と書きながら、思い切り回避ですが。
マイグレーション時のエラー
マイグレーションしたら、以下のエラーになりました。
$ pipenv run python3 manage.py migrate<br>django.db.utils.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(6) NOT NULL, `update_date` datetime(6) NOT NULL)' at line 1")
調べたら、SQL文の”(6)”という部分は、MySQL 5.6.4 以降での「マイクロ秒 (6 桁) までの精度を持つ」ことができる機能らしいです。
https://dev.mysql.com/doc/refman/5.6/ja/date-and-time-type-overview.html
対処: 対象のSQL文から削除する。。
ぶっちゃけ「μ秒」なんて使わないので、マイグレーション時に発行するSQL文から、”(6)”を消しました。。対応がムゴいのは認めます。。
私の場合はpipenvを使用して、ディレクトリ下に仮想環境を作成して修正しているので、対象のSQL文は以下にあります。
.venv/lib/python3.6/site-packages/django/db/backends/mysql/base.py
class DatabaseWrapper(BaseDatabaseWrapper): vendor = 'mysql' # 'DateTimeField': 'datetime(6)', 'DateTimeField': 'datetime',
のように、”(6)”を消したら、一応、マイグレーションは成功しました。
その後の動作も特に問題なく動いているようです。