• ベストアンサー

このエラーの意味は?

Zend_Dbを利用しているのですがメソッド内でforeachを使いDBから値を取得する箇所に限り 『SQLSTATE[HY000]: General error: 2050 』 というエラーがログに記録されます。意味がわからないのですがどうすれば解決できますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • junkUser
  • ベストアンサー率56% (218/384)
回答No.1

同じ問題がここで議論されていますね。 http://bugs.php.net/bug.php?id=35793 Zend_Db が原因ではなく、PDO に問題があるようです。 提案1.$db に設定を追加 $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, true); 提案2.$stmt を再利用する際に以下を記述 $stmt->closeCursor(); $stmt = NULL;

dcx147
質問者

補足

お返事ありがとうございます。確かにPDOを利用しております。 試しに以下のように 1の方法で試したところエラーになりました。 // データベースアダプタ作成 $this->_db = Zend_Db::factory($database['adapter'], $database['params']); $this->_db->setAttribute(PDO::ATTR_EMULATE_PREPARES, true); $this->_db->setFetchMode(Zend_Db::FETCH_ASSOC); $this->_db->query("set names 'utf8'"); としてみましたが違ったエラーになってしまいます。 Fatal error: Call to undefined method Zend_Db_Adapter_Pdo_Mysql::setAttribute() inファイル名 そこで2n方法を試したところ無事に成功です。ローカルでは問題なかったので なぜエラーになるのか困っておりましたが助かりました!

関連するQ&A