Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
14
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

@poly_soft

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

問題

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の新バージョンリリース後にアップグレードする、という方式が望ましいのではないかと思われます。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
14
Help us understand the problem. What are the problem?