- blogs:
- cles::blog
2019/10/29

gem mysql から mysql2 に移行してみる


昔書いた Ruby のプログラムを CentOS 7 上で動かそうとしたのですが、MariaDB が 10.4 と比較的新しいバージョンだったので gem で mysql がインストールできないので困ってしまいました。
mysqlを見ると、最終アップデート日が 2013 年になっていて、最近はメンテナンスされていないようです。このまま粘っても解決の見込みも立たないので、mysql2 に移行してしまうことにしました。
† ソースの書き換えは大きく3箇所
基本的には以下の3箇所を変更してやれば、基本的な動作はするようです。
Date などの部分を自動的に cast する機能がついたようですが、これは :cast => false でオフにしてあります。
# モジュールの読み込み
require 'mysql'
require 'mysql2'
# 接続
@db = Mysql::connect('localhost', 'user_name', 'pass', 'db_name')
@db = Mysql2::Client.new(:host => 'localhost', :username => 'user_name', :password=> 'pass', :database => 'db_name', :cast => false)
# 結果の取得
rows.each_hash
rows.each
† MariaDB 10.4 環境で gem install mysql をすると発生するエラー
$ sudo LANG=C gem install mysql
Building native extensions. This could take a while...
ERROR: Error installing mysql:
ERROR: Failed to build gem native extension.
/usr/bin/ruby extconf.rb
checking for mysql_ssl_set()... yes
checking for rb_str_set_len()... yes
checking for rb_thread_start_timer()... no
checking for mysql.h... yes
creating Makefile
make "DESTDIR="
gcc -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I. -DHAVE_MYSQL_SSL_SET -DHAVE_RB_STR_SET_LEN -DHAVE_MYSQL_H -I/usr/include/mysql -I/usr/include/mysql/mysql -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -mtune=generic -fPIC -m64 -o mysql.o -c mysql.c
mysql.c: In function 'real_connect':
mysql.c:276:17: error: 'MYSQL' has no member named 'reconnect'
myp->handler.reconnect = 0;
^
mysql.c: In function 'real_connect2':
mysql.c:350:6: error: 'MYSQL' has no member named 'reconnect'
m->reconnect = 0;
^
mysql.c: In function 'reconnect':
mysql.c:920:27: error: 'MYSQL' has no member named 'reconnect'
return GetHandler(obj)->reconnect ? Qtrue : Qfalse;
^
mysql.c: In function 'reconnect_set':
mysql.c:926:20: error: 'MYSQL' has no member named 'reconnect'
GetHandler(obj)->reconnect = (flag == Qnil || flag == Qfalse) ? 0 : 1;
^
mysql.c: In function 'reconnect':
mysql.c:921:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
make: *** [mysql.o] Error 1
Gem files will remain installed in /usr/local/share/gems/gems/mysql-2.9.1 for inspection.
Results logged to /usr/local/share/gems/gems/mysql-2.9.1/ext/mysql_api/gem_make.out
トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/11312
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
サイト内検索
検索ワードランキング
へぇが多いエントリ
閲覧数が多いエントリ
1 . Windows 10 で勝手にログアウトされないようにする(3468)
2 . リモートデスクトップで Alt + PrtSc と同じことをするには(3005)
3 . RDP のプロトコルを TCP だけに変更する(2334)
4 . 「日次」は「にちじ」じゃない?(2075)
5 . リモートデスクトップで Ctrl + Alt + Del キーを送信するには(2042)
2 . リモートデスクトップで Alt + PrtSc と同じことをするには(3005)
3 . RDP のプロトコルを TCP だけに変更する(2334)
4 . 「日次」は「にちじ」じゃない?(2075)
5 . リモートデスクトップで Ctrl + Alt + Del キーを送信するには(2042)
cles::blogについて
Referrers