2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Ruby on Rails:Mysql2】起動時エラー uninitialized constant Mysql2::Client::LONG_PASSWORD

Posted at

概要

Railsのモジュールを動かそうとしたらエラーが出てハマったのでメモ。
なかなか対応策が見つからなかったの記載。
根本的な原因はともかく、とりあえず動かしたい人向けの対応となります。

環境

# コンテナ(サーバ)環境
Docker Container : ruby:2.5
mysql  Ver 15.1 Distrib 10.3.17-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
# Rails:
Ruby on Rails 5.0.2
mysql2 (0.4.5)

エラー内容

DB接続で失敗。初回アクセスやmigrateで失敗する。

# メッセージ
uninitialized constant Mysql2::Client::LONG_PASSWORD

# スタックトレース
mysql2 (0.4.5) lib/mysql2/client.rb:14:in `default_query_options'
mysql2 (0.4.5) lib/mysql2/client.rb:25:in `initialize'
activerecord (5.0.2) lib/active_record/connection_adapters/mysql2_adapter.rb:25:in `new'
activerecord (5.0.2) lib/active_record/connection_adapters/mysql2_adapter.rb:25:in `mysql2_connection'
activerecord (5.0.2) lib/active_record/connection_adapters/abstract/connection_pool.rb:729:in `new_connection'
activerecord (5.0.2) lib/active_record/connection_adapters/abstract/connection_pool.rb:773:in `checkout_new_connection'
activerecord (5.0.2) lib/active_record/connection_adapters/abstract/connection_pool.rb:752:in `try_to_checkout_new_connection'
<略>

対応

gemで落としたmysql2のclient.rbから「LONG_PASSWORD」を削除する

# /usr/local/bundle/gems/mysql2-0.4.5/lib/mysql2/client.rb(環境差異はあります。)

# 変更前
:connect_flags => REMEMBER_OPTIONS | LONG_PASSWORD | LONG_FLAG | TRANSACTIONS | PROTOCOL_41 | SECURE_CONNECTION,
# 変更後
:connect_flags => REMEMBER_OPTIONS | LONG_FLAG | TRANSACTIONS | PROTOCOL_41 | SECURE_CONNECTION,

# ワンライナーでだと以下のコマンド
find /usr/local/bundle/gems -type f -wholename *mysql2*/client.rb | xargs sed -i -e "s/LONG_PASSWORD | //g"

コメント、考察

  • あくまで暫定対応です。
  • gemのライブラリを直接手を加えてしまうのでできることならやめたほうがいい。
  • コンテナのmysqlコマンドのバージョンがMariaDBだからか?
  • ちなみに、debianは特定のバージョン以降はapt-getではMariaDBになる。
2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?