[s2container-php5:103] Re: findAllArrayメソッド実行時にS2Dao_PrimaryKeyNotFoundRuntimeException発生。(長文)
Yusuke Hata
[E-MAIL ADDRESS DELETED]
2007年 8月 19日 (日) 22:30:19 JST
ハタです。
反応が遅くなってしまいました。すいません。
うえやまさん、詳細な解析ありがとうございます。
MySQL側でprimaryKeyを取得しにいくために
> SELECT * FROM テーブル名 LIMIT 0
として、空のテーブル情報から取得できたカラム項目数(PDOStatement::columnCount)分だけ
カラム定義情報を取得(PDOStatement::getColumnMeta)します。
MySQLの場合は、PDOドライバの実装だけでこの定義を使用しているのですが、
MySQLのバージョンによってはPDOドライバがサポートしていない場合もあります。(4.0.xxとか)
もしPDOドライバがサポートしていない場合は、他のDBMS同様、Wrapperで取得するように修正が必要です。
# ちなみに、以前私の環境でテストしたときに4.0.20が上手く認識しなかったような記憶があります。
もしよければ使用しているMySQLのバージョンを教えていただけますか?
私の方で用意ができれば、再現させてみたいです。
以上です、よろしくお願いします。
"Yoshinari Ueyama" <[E-MAIL ADDRESS DELETED]> wrote:
> うえやまです。
>
> 下記件、追加情報です。
>
>
> > 最近、ひさしぶりにS2Daoでプログラムを作成しだしました。
> > で、あるテーブル用のDaoとEntityを作成してDaoのfindAllArrayを
> > 実行すると以下のエラーが発生しました。
> >
> > どうも、s2dao.core.classes.phpのcheckPrimaryKey()実行時にPKが
> > 定義されていないと判断されてエラーとなっているようです。
> > create table文を見る限りPK設定していますし・・・
>
>
> S2Dao_DatabaseMetaDataUtilクラスのaddPrimaryKeysメソッド中で
> 、getTableInfoメソッドを用いて取得している情報を調べてみましたら
> 以下の2件を取得していました。
>
> native_type VAR_STRING
> flags Array
> table users
> name username
> len 60
> precision 0
> pdo_type 2
>
> native_type VAR_STRING
> flags Array
> table users
> name email
> len 600
> precision 0
> pdo_type 2
>
> ・・・flagsの中身を見ればさらに分かるでしょうが、この段階で存在しない
> 項目「username」を取得しています。ほんらいならばpk指定している「id」項
> 目についての情報が取得されるべきだと思います。このような状態になったの
> は何故か?という観点で調査継続です。
>
> (参考)tableの定義
> CREATE TABLE `users` (
> `id` int(10) unsigned NOT NULL auto_increment,
> `name` varchar(50) default NULL,
> `email` varchar(255) character set utf8 collate utf8_bin NOT NULL
> default '',
> `pwd` varchar(255) default NULL,
> `profile` text,
> `created` datetime default NULL,
> `modified` datetime default NULL,
> PRIMARY KEY (`id`),
> UNIQUE KEY `email` (`email`)
> ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
>
>
> 以上です。
> --
> ------------------------------------------------------------------
> 植山 能成@福岡
> mailto:[E-MAIL ADDRESS DELETED]
> ------------------------------------------------------------------
>
--
Yusuke Hata <[E-MAIL ADDRESS DELETED]>
blog: http://blog.xole.net/
S2Container-PHP5 メーリングリストの案内