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

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

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

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

執筆者:

関連記事

Markdown to HTML(grip)

1.はじめに 最近の文書はほとんどMarkdownで書くのですが、それをHTMLに変換する方法を調べました。 ただし、私がMarkdownと思っている文法は「github-flavored-markd …

新規プロジェクト参入時に考えること

派遣における労働条件 就業予定時間(変形労働時間やフレックスタイム制の適用を含む)残業の有無と量就業場所(交通ルート、オフィスの配置等)業務の継続予定期間 制服の有無 (背広かどうか)福利厚生施設の有 …

Vue.jsをbetter jQueryとして使う!FastAPI+Vue.jsと生成AIで作る住所録アプリ

昔あるところに。。 昔、jquery全盛で、Vue.jsが出てきたすぐに「これはjqueryを駆逐できるかも」と思ってjqueryの実装をVue.jsに変えようとしたことがあります。 結局全部を変えた …

小ネタ: Ansible , with_itemsをloopに変える方法

とっても小さい小ネタです。 Ansible 2.4(今現在) -> Ansible 2.9に変えたい Ansibleを使用していますが、だいたい2.4ぐらいを使っています。流石にバージョンアップ …

Dockerを使用してGo言語の開発環境を構築する

なんとなくGolangのブロジェクトに機能追加しようと思いました。 Golangの開発用に、Dockerfile等を準備する手順を書いておこうと思います。 サンプルにnfpm サンプルとして、Fork …

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