[s2container-php5:102] Re: findAllArrayメソッド実行時にS2Dao_PrimaryKeyNotFoundRuntimeException発生。(長文)

Yoshinari Ueyama [E-MAIL ADDRESS DELETED]
2007年 8月 8日 (水) 08:32:56 JST


うえやまです。

下記件、追加情報です。


> 最近、ひさしぶりに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]
------------------------------------------------------------------
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: http://ml.seasar.org/archives/s2container-php5/attachments/20070808/2e930ed4/attachment.html 


S2Container-PHP5 メーリングリストの案内