RubyからMySQLを使うためのライブラリをいれます。
ライブラリは2種類存在していて
Ruby/MySQL(pure Ruby)
と
MySQL/Ruby(CのMySQLライブラリのラッパー)
があります。
それぞれ長所、短所があるわけですが
作者の人が
MySQL/Ruby終了のお知らせ
こんなこと言っているのでRuby/MySQLの方をいれようと思います。
まだアルファ版だそうですが入れ方↓
Ruby/MySQL 3.0.2 alpha – しあわせプログラマ
$ sudo gem install tmtm-ruby-mysql --source http://gems.github.com
gemでインストールしたものがあるのは
$ ls /opt/local/lib/ruby1.9/gems/1.9.1/gems/
tmtm-ruby-mysql-3.0.2/
動くか確認する。
$ mysql
mysql> GRANT ALL PRIVILEGES ON *.* TO gonpingy@localhost IDENTIFIED BY 'password' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Bye
$ mysql -u gonpingy -p
mysql> use test;
Database changed
mysql> create table ruby_test ( id integer, value varchar (32) );
Query OK, 0 rows affected (0.00 sec)
mysql> desc ruby_test;
+-------+-------------+------+-----+---------+-------+
Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
id | int(11) | YES | | NULL | |
value | varchar(32) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.01 sec)
insertはできる。
#! /usr/bin/ruby -Ku
require 'mysql'
mysql = Mysql.connect( 'mysql://gonpingy:password@127.0.0.1:3306/test' )
mysql.query ( "insert into ruby_test values ( 1, 'abc' )" )
が、selectでエラー。。
#! /usr/bin/ruby -Ku
require 'mysql'
mysql = Mysql.connect( 'mysql://gonpingy:password@127.0.0.1:3306/test' )
mysql.query ( "insert into ruby_test values ( 1, 'abc' )" )
mysql.query ( "select id from ruby_test" )
こんなエラーが。。。よくわからない。
/opt/local/lib/ruby1.9/gems/1.9.1/gems/tmtm-ruby-mysql-3.0.2/lib/mysql/protocol.rb:294:in `read_eof_packet': packet is not EOF (Mysql::ProtocolError)
from /opt/local/lib/ruby1.9/gems/1.9.1/gems/tmtm-ruby-mysql-3.0.2/lib/mysql.rb:233:in `block in simple_query'
from /opt/local/lib/ruby1.9/gems/1.9.1/gems/tmtm-ruby-mysql-3.0.2/lib/mysql/protocol.rb:212:in `block in synchronize'
from <internal:prelude>:8:in `synchronize'
from /opt/local/lib/ruby1.9/gems/1.9.1/gems/tmtm-ruby-mysql-3.0.2/lib/mysql/protocol.rb:211:in `synchronize'
from /opt/local/lib/ruby1.9/gems/1.9.1/gems/tmtm-ruby-mysql-3.0.2/lib/mysql.rb:222:in `simple_query'
from /opt/local/lib/ruby1.9/gems/1.9.1/gems/tmtm-ruby-mysql-3.0.2/lib/mysql.rb:209:in `query'
from mysql.rb:6:in `<main>'