LoginSignup
14
14

More than 5 years have passed since last update.

Phoenix1.1.4とMySQL5.7の組み合わせで発生する問題

Last updated at Posted at 2016-02-19

問題

Phoenixの現時点の最新バージョンである1.1.4と、MySQLにアクセスするためのドライバであるmariaexには、下記のような依存関係があります。

phoenix 1.1.4 -> phoenix_ecto 2.0.1 -> ecto 1.1.3 -> mariaex 0.5.0

mariaexの最新バージョンは0.6.2になりますので、上記の0.5.0はやや古いバージョンということになりますが、このバージョンがどうやらMySQL5.7に対応出来ていないようです。

現時点で、Mac環境でhomebrewを使用してMySQLをインストールすると5.7.xがインストールされると思いますが、その状態でElixir/Phoenixをインストールしてプロジェクト作成後に、

mix ecto.migrate

というマイグレーション用コマンドを実行すると、なんのエラーも表示されないまま実行がスタックした状態になると思います。

コードを追ってみた限りでは、どうやらMariaex.Connection.query/4関数が問題箇所のようですが、具体的な原因までは分かりませんでした。

回避方法

回避方法は2種類あります。

方法1. mariaexの最新バージョンの使用を強制する

mix.exsのdeps関数に下記のように記述します。

{:mariaex, "~> 0.6.2", override: true},

これによって、mariaexの最新バージョンがインストールされるようになります。この回避方法に関しては下記の情報を参考にしました。

Please update the mariaex dependency to 0.6.1 to work with mysql 5.7.9

方法2. MySQL5.6を使用する

homebrewでMySQLをインストールする際に、

brew install mysql

ではなく

brew install homebrew/versions/mysql56

というコマンドを実行すると、MySQL5.6がインストールされます。

既にMySQL5.7をインストールしてしまっている場合は、下記の記事をご参照ください。

homebrew mysql バージョンを落とす

最後に

ectoの2.0がもうすぐリリースされる(mariaexの0.6以降が使用されるようになる)ようですが、それに合わせて恐らくPhoenixもバージョンアップすると思いますので、とりあえず上記どちらかの対応で応急処置をしておいて、Phoenixの新バージョンリリース後にアップグレードする、という方式が望ましいのではないかと思われます。

14
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
14