Ruby/MySQLでuninitialized constant Mysql::Protocol::UNIXSocket (NameError)

ActiveScriptRubyでRuby/MySQL(pure rubyのほう)を使ってMySQLデータベースに接続しようとしたのですが、エラーが発生して接続できませんでした。

C:/Program Files/ruby-1.8/lib/ruby/gems/1.8/gems/ruby-mysql-2.9.2/lib/mysql/protocol.rb:212:in `initialize': uninitialized constant Mysql::Protocol::UNIXSocket (NameError)
	from C:/Program Files/ruby-1.8/lib/ruby/1.8/timeout.rb:53:in `timeout'
	from C:/Program Files/ruby-1.8/lib/ruby/gems/1.8/gems/ruby-mysql-2.9.2/lib/mysql/protocol.rb:209:in `initialize'
	from C:/Program Files/ruby-1.8/lib/ruby/gems/1.8/gems/ruby-mysql-2.9.2/lib/mysql.rb:110:in `new'
	from C:/Program Files/ruby-1.8/lib/ruby/gems/1.8/gems/ruby-mysql-2.9.2/lib/mysql.rb:110:in `connect'
	from C:/Program Files/ruby-1.8/lib/ruby/gems/1.8/gems/ruby-mysql-2.9.2/lib/mysql.rb:42:in `new'
	from dbselect.rb:4

RubyGemsを使って入れたのでバージョン不整合?などと疑い、いろいろ調べてみたのですが、接続時のホスト名を”localhost”→”127.0.0.1″に修正したら大丈夫になりました。海外のフォーラム情報によるとWindowsでもUNIXSocketを使おうとするRuby/MYSQLのバグらしいです(Error: uninitialized constant Mysql::Protocol::UNIXSocket | keyongtech

■だめ

db = Mysql.new('localhost', 'dbuser', 'dbpassword', 'dbname');

■OK

db = Mysql.new('127.0.0.1', 'dbuser', 'dbpassword', 'dbname');

シェアする

  • このエントリーをはてなブックマークに追加

フォローする