CircleCI で MySQL にパラメータを渡す #CircleCI

TL;DR

command 要素を使うとパラメータを渡せる。

- image: circleci/mysql:5.7-ram
  environment:
    MYSQL_ROOT_PASSWORD: password
    MYSQL_DATABASE: test
  command: ['--character-set-server=utf8mb4']

こんな感じにすると動く。

経緯

Invalid datetime format: 1292 Incorrect datetime value: ‘0000-00-00 00:00:00’

CI を導入したら、テストデータ登録でエラーが発生。

sql_mode の設定が原因であった。

現行の DB の sql_mode が空になっていたので、とりあえず設定を揃えることで回避できないかと考えた。
(本当は STRICT でも動くようにしたい)

MySQL

cnf ファイルを用意してもいいのだが、なんかサクッとやる方法ないかなと調べてみる。

MySQL のイメージ自体は --character-set-server=utf8mb4 みたいな感じで渡せるようだ。

hub.docker.com

CircleCI

設定のリファレンスを読むと、 command という設定があるのを発見。

値ありオプションの例がなかったけど、そのまま渡してあげれば大丈夫なようだ。

circleci.com

command: ['--sql-mode=']

これでよかったっぽい。

参考