Ruby/MySQL は Ruby から MySQL を使用するためのライブラリです。
特徴:
[さらに読む]UTF-8 文字列中に UTF-8 として正しくないコードが入っていた場合に、その文字を「?」などに置き換えたいことがあります。
たとえば MySQL に登録するときは不正な文字を消しとかないと、その文字以降すべて消えてしまいます。
mysql> insert into t (c) values (0x414243FF58595A); Query OK, 1 row affected, 1 warning (0.06 sec) Warning (Code 1366): Incorrect string value: '\xFFXYZ' for column 'c' at row 1 mysql> select * from t; +------+ | c | +------+ | ABC | +------+ 1 row in set (0.00 sec)
ということで、Ruby では Iconv を使ってこんな感じで対処してます。
require 'iconv' def sanitize_utf8(str) ret = '' i = Iconv.open(' …[さらに読む]
MySQL/Ruby にバグがあったので 2.8.2 をリリースしました。
ダウンロードはこの辺から→ http://rubyforge.org/projects/mysql-ruby/
Mysql#insert_id が 32bit を超える場合に不正な値を返すというものです。
具体的には BIGINT AUTO_INCREMENT の場合に、自動的に 2147483648(UNSIGNED BIGINT の場合は 4294967296)以上の場合に、不正な値を返します。
mysql> create table t (id bigint auto_increment, unique(id)); mysql> alter table t auto_increment=2147483645;
m.query('insert into t values (0)') m.insert_id #=> 2147483645 m.query('insert into t values (0)') m.insert_id #=> …[さらに読む]
Ruby/MySQL 3.0.1 を作りました。相変わらずアルファ版です。
インストールは次のように。
# sudo gem install tmtm-ruby-mysql --source http://gems.github.com
3.0.0 からの変更点
mysql.query("select 1,2,3") # プリペアドステートメントではない mysql.query("select ?,?,?", 1, 2, 3) # プリペアドステートメント
Webの世界にもGPLと同様の自由や相互運用性をもたらす小粋なAGPLであるが、運用に際しては注意点がある。それは、ライセンスの互換性である。結論から言うと、AGPLはGPLv2と互換性がない。GPLv2を利用したソフトウェアを改変またはリンクして、AGPLとしてリリースすることは出来ない。それが最大の問題である。GPLv3では一部互換で、GPLv3のソフトウェアを改変してAGPLとしてリリースすることは出来ないが、GPLv3のコードをリンクしたソフトウェアをAGPLv3としてリリースすることが可能である。
…
github に Ruby/MySQL 3.0.0 を置きました。
git にも gem にも慣れてないので試行錯誤でしたが、なんとか置けたようです。
github は gemspec を置いておけば自動的に gem を作ってくれるはずなのですが、罠に嵌まってもがいてました。
GitHub では *.gemspec ファイルのバージョン番号が更新されたときにのみ Gem を生成する。だから *.gemspec を最初に commit & push したときは、Gem が生成されない(バージョン番号が更新されているわけではないから)。まずは *.gemspec ファイルをバージョン 0.0.0 とかで commit & push し、そのあとバージョンを上げて commit & push し直す。
…
[さらに読む]
DB自体の話が最近多くなってきたので、アプリ層のことも少し書いてみようと思います。
今回はプログラミング言語RubyからMySQLにアクセスするベーシックなプログラムを作ってみようと思います。最低限の要素が入っているようなものを作成したいと思います。
1. Rubyのインストール
今回はお手軽版ということで、以下を使ってみました。
One-Click Ruby Installer 186-26 Final
Release
ダウンロードはこちらからできます
…
[さらに読む]