スクリプトのお勉強 失敗談 技術

Django2.2 でのMySQL5.1対応

投稿日:

「対応」と書きながら、思い切り回避ですが。

マイグレーション時のエラー

マイグレーションしたら、以下のエラーになりました。

$ 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)”を消したら、一応、マイグレーションは成功しました。

その後の動作も特に問題なく動いているようです。

-スクリプトのお勉強, 失敗談, 技術

執筆者:

関連記事

暗号モードによる処理時間の違いを測定してみた

はじめに 前回、AESで暗号化する実装をしてみた際、知らない暗号モードが増えたなと思いました。 なので、どの暗号モードを使用すべきかの、判定材料の一つとして、代表的な暗号モードの処理速度を簡単に計って …

Pythonでの勘違い(if A:)

勘違い 小ネタです。 Pythonでは、以下のように書くことができます。 a = [] if a: print(“not empty!”) else: print(“empty!”) 結果は以下になり …

悪いほうが良い? でも限度があるよね。。

自分のその時の状態によって結論が変わる https://tech.nikkeibp.co.jp/atcl/nxt/column/18/00620/040900010/を見て書こうと思いました。 今やっ …

Nuxt.jsのFormで入力/確認/完了フォームを作成してみた(その1)

背景 今回は、Webアプリケーションの、フロントエンド系のお話です。ほとんどの場合、バックエンドなのですが、時々フロントエンドもするんですよね。。 私の派遣先では、入力フォームを以下のように分ける要望 …

seaborn + Pandas + Python によるグラフ描画(その2: グラフ描画編)

前回の続き 前回の続きです。 折れ線グラフ まずは折れ線グラフを描画したいと思います。 描画するのは以下です。 運用商品(4つ)日経平均 以下で起動します。引数(dataset-2017-201908 …

    google オプトアウト Click here to opt-out.