I reported this issue in Google Code (issue 2873), but invalidated by Qiang. I think it is pretty much dead unless I post here to raise focus.
Basically, if a database table does not have primary key, and define a relation for it, we calling this relation, exception is thrown. This issue exists in Yii 1.1.8. ASAIK, any relation invokes lazyFind(). The problem is, CJoinElement lazyFind() does not check if the model’s primary key is null before for loop. The fix could be simple: add
if ($this->_table->primaryKey !== null)
at line 476 of CActiveFinder.php.