『こぶたのラッパ』はサイトを移動しました!
今後はこちらをどうぞ
2006年 09月 13日
PEARのMDB2+DB_DataObject+Oracle
PHPのPEARのライブラリで不具合がいくつか放置されていたため、この組み合わせでかなりはまってしまいました。

・MDB2(2.2.2)
・MDB2_Driver_oci8(1.0.2)
・DB_DataObject(1.8.4)

あちこちの場所で不具合報告や対応方法などが挙がっていましたが、それぞれ適用してもうまく動かず、結構な時間を費やす羽目に・・・

<参考にしたページ>
Bug #3581 oci8::numRows() and _fillBuffer() issues
Bug #7907 uses database as username
Bug #8628 tableInfo with MDB2

あと一時間やってだめならあきらめようと思ったのですが、最後の最後でうまくいってしまいました。
エラーの詳細をレポートする気力は残っていませんが(PEARにレポートする気力も・・・)、せっかくなのでパッチだけは残しておきます。
同じ組み合わせではまっている人の一助となれば、今日の私の一日も報われそうです。

>>>パッチをダウンロード

パッチを当てた後、次のような作業でテーブルごとの DataObject サブクラスが作成されます。
■DataObject.iniの作成
----
[DB_DataObject]
db_driver = MDB2
database = oci8://ユーザー名:パスワード@ホスト名/TNS名
schema_location = /path/to/スキーマファイル置き場
class_location = /path/to/クラスファイル置き場
class_prefix = DAO_
debug = 5
----

■作成実行
----
php DB/DataObject/createTables.php DataObject.ini
※いくつかエラーが出ますが、無害そうなので無視。
----

■スキーマファイル(iniファイル)を手修正
スキーマファイルが出力されますが、主キーは設定されていませんので、手で修正します。
※こんな感じ
----
[{テーブル名}__keys]
{主キーカラム名} = K ← これをテーブルごとに設定する
----

DataObject側の不具合はまあ仕方がないかと思われるようなものですが、MDB2_Driver_oci8の不具合は目を見張るものがありました。本当にこれで動かせている人がいるのか不思議。
[PR]
by smilkobuta | 2006-09-13 17:22 | コンピュータ

<< -●---- トンボ玉 ---... YUKIのWAVEを買いました >>