[s2container-php5:37] S2Daoでのselect ... insert intoの実行に関して
Eishi Kuroda
kuroda @ jetsetrecords.net
2006年 6月 30日 (金) 18:47:00 JST
こんにちは、黒田です。
下記環境で、S2Daoを使ってテーブル内のデータの
ファイル出力を行おうと考えています。
s2container.php5-1.1.0
s2dao.php5-1.1.0-rc3
MySQL 4.1.20
PHP 5.1.4
Daoに下記の様に記述して、outputAll()を実行します。
const outputAll_SQL = "select * into outfile 'path_to_output/out.txt'
fields terminated by '\t' from some_table";
public function outputAll();
ここで、環境によって結果が異なることになりました。
windows2000で実行してみたところ、問題なくファイル出力されます。
FreeBSD4.7で実行したところ、下記のようにエラーとなりました。
exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 2053 ' in
/usr/local/lib/php/S2Dao/S2Dao/S2Dao_BeanMetaDataResultSetHandler.class.php:14
S2Dao_BeanMetaDataResultSetHandler#handleで
$resultSet->fetch(PDO::FETCH_ASSOC)
としているところでエラーとなっています。
select文なのですが、into outfileでファイル出力なので結果セットが存在せず、
fetchするとエラーとなるようなのです。
(なぜwindowsでは成功するのか疑問。)
これを回避する方法はないでしょうか?
とりあえずは、
S2Dao_BasicSelectHandler#executeで、
$stmt->columnCount() == 1
以外の場合すべて
return $this->resultSetHandler_->handle($stmt);
としていますが、エラー時点でのcolumnCount()は0となっていますので、
S2Dao_BeanMetaDataResultSetHandler#handleの頭に
if($resultSet->columnCount() <= 0){
return null;
}
と付け加えると動いてはいるのですが・・・。
よろしくお願いいたします。
黒田映史
S2Container-PHP5 メーリングリストの案内