2011年4月11日月曜日

rubyとmysqlの接続

Posted on 15:20 in ,

mysqlドライバのインストール


$ gem install ruby-mysql

接続テスト


require 'rubygems'
require 'mysql'


#db = Mysql.new("localhost", "username", "password","db")
db = Mysql.connect("localhost", "username", "password","db")

⇒ エラーが出なければOK。

undefined method `connect' for Mysql:Class (NoMethodError)
もしくは `initialize': wrong number of arguments (3 for 0) (ArgumentError)
が出る場合


- 確認

1. Mysql.methods でメソッドを確認

["private_class_method", "inspect", "yaml_as", "to_yaml_style", "name", "tap", "clone", "public_methods", "object_id", "__send__", "method_defined?", "instance_variable_defined?", "equal?", "freeze", "extend", "send", "const_defined?", "methods", "ancestors", "module_eval", "instance_method", "hash", "autoload?", "dup", "to_enum", "yaml_tag_read_class", "instance_methods", "public_method_defined?", "instance_variables", "class_variable_defined?", "eql?", "constants", "id", "instance_eval", "singleton_methods", "module_exec", "to_yaml", "yaml_tag_class_name", "const_missing", "taint", "instance_variable_get", "frozen?", "enum_for", "private_method_defined?", "public_instance_methods", "display", "instance_of?", "superclass", "to_yaml_properties", "method", "to_a", "included_modules", "const_get", "instance_exec", "type", "<", "protected_methods", "<=>", "class_eval", "==", "yaml_tag_subclasses?", "class_variables", ">", "===", "instance_variable_set", "protected_instance_methods", "protected_method_defined?", "respond_to?", "kind_of?", ">=", "taguri", "public_class_method", "to_s", "<=", "const_set", "allocate", "class", "new", "private_methods", "=~", "tainted?", "__id__", "class_exec", "taguri=", "autoload", "untaint", "nil?", "private_instance_methods", "include?", "is_a?"] connect メソッドがない

2. gem list |grep mysql を確認。
mysql (2.8.1)がある。

- 対処方法

1. mysql をアンインストール

$ gem uninstall mysql

2. ruby-mysqlのインストール
⇒既にインストールしている場合はこの手順は必要ありません。

$ gem install ruby-mysql

Mac OS X環境で invalid packet: sequence number mismatch のエラーが出る場合


$gem unistall ruby-mysql
$gem install ruby-mysql -v 2.9.3

1 件のコメント

  1. はじめまして。
    Rubyで開発を行っているものです。
    mysqlの接続エラーで困ったいたのですが、
    ブログを参照させていただき解決することができました。
    助かりました、ありがとうございます。

    返信削除