Ubuntu 19.04 で MySQL を Ruby on Rails に接続できない

Ubuntu 19.04 で MySQL を Ruby on Rails に接続できない

Ubuntu 19.04 に Ruby Gems をインストールするのに困難に直面しています。Gem をインストールしようとすると、必ず make failed、終了コード 2 が表示されます。ただし、MySQL は OS に正しくインストールされています。Ruby サーバーも動作しますが、MySQL データベースがありません。

greyshader@ScarlettHaven:~$ sudo gem install mysql
Building native extensions. This could take a while...
ERROR:  Error installing mysql:
    ERROR: Failed to build gem native extension.
current directory: /var/lib/gems/2.5.0/gems/mysql-2.9.1/ext/mysql_api
/usr/bin/ruby2.5 -r ./siteconf20190611-30763-iq3xfl.rb 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

current directory: /var/lib/gems/2.5.0/gems/mysql-2.9.1/ext/mysql_api
make "DESTDIR=" clean

current directory: /var/lib/gems/2.5.0/gems/mysql-2.9.1/ext/mysql_api
make "DESTDIR="
compiling mysql.c
mysql.c: In function ‘stmt_bind_result’:
mysql.c:1320:74: error: ‘rb_cFixnum’ undeclared (first use in this function); did you mean ‘rb_isalnum’?
  else if (argv[i] == rb_cNumeric || argv[i] == rb_cInteger || argv[i] == rb_cFixnum)
                                                                          ^~~~~~~~~~
                                                                          rb_isalnum
mysql.c:1320:74: note: each undeclared identifier is reported only once for each function it appears in
make: *** [Makefile:243: mysql.o] Error 1

make failed, exit code 2

Gem files will remain installed in /var/lib/gems/2.5.0/gems/mysql-2.9.1 for inspection.
Results logged to /var/lib/gems/2.5.0/extensions/x86_64-linux/2.5.0/mysql-2.9.1/gem_make.out

私の Ruby バージョンは次のとおりです:

greyshader@ScarlettHaven:~$ ruby --version
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux]

私の Rails のバージョンは次のとおりです:

greyshader@ScarlettHaven:~$ rails --version
Rails 6.0.0.rc1

しかし、mySQL でバージョンを確認しようとすると、エラーが発生します。

greyshader@ScarlettHaven:~$ mysql -version
ERROR 1045 (28000): Access denied for user 'greyshader'@'localhost' `(using password: NO)`

答え1

このgemはもうサポートされていないようです。代わりにmysql2-gemを使ってみてください。

関連情報