Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

問題

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

poly_soft
雑食系エンジニアです。バックエンドの多種多様な言語/DB/フレームワーク、AWSとGCPの様々なマネージドサービスに精通しています。クラウドアーキテクチャ設計、クラウドインフラ構築管理、基盤コード開発、サービスのモダン化、DevOps/MLOpsが現在の専門です。 オンラインサロン→https://bit.ly/2u4D5ZN youtube→https://t.co/izTybmGHUN
http://kentakatsumata.net/
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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした