とみたです。

On Fri, 13 Jun 2008 09:54:19 +0900
adgjmptw / super-r.net wrote:

> MySQLのマニュアルを読むと
> http://dev.mysql.com/doc/refman/4.1/ja/mysql-sqlstate.html
> #マニュアルから抜粋 ------------------------
> 
> 11.1.3.52. mysql_sqlstate()
> この関数は MySQL 4.1.1 で追加されました。
> 
> #抜粋ここまで ------------------------------
> とあります。
> 
> 私が使っているMySQLは4.0.9なので、mysql_sqlstate()が無いはず。
> C:\mysql\bin\libmySQL.dll の中身をDependency Viewerで確認したところ、確
> かにmysql_sqlstateのエントリがありませんでした。

MySQL/Ruby はコンパイル時に mysqlclient ライブラリのバージョンを見て使
える関数を判断しています。たとえばこんな感じ…

---------------------------------------------------------
#if MYSQL_VERSION_ID >= 40101
/*      sqlstate()      */
static VALUE sqlstate(VALUE obj)
{
    MYSQL *m = GetHandler(obj);
    return rb_tainted_str_new2(mysql_sqlstate(m));
}
#endif
---------------------------------------------------------

なので、4.1.x 環境で作成した MySQL/Ruby を 4.0.9 で動かそうとしているの
ではないかと思います。

古いバージョンで作成した MySQL/Ruby を、新しいバージョンの MySQL 環境で
動かしたら多分動くと思いますが、その逆はダメだと思います。

-- 
とみたまさひろ <tommy / tmtm.org>
3469 42CC 4D32 F53C AD98  65A5 8C37 FF09 69C1 6040