2011-01-13 3 views
1

ウェブサイトをあるサーバーから別のサーバーに移行しています。コードは大規模なので、当然のことながら私は問題を共有してきました。行が参照さ未知PDOException:フェッチモードではcolnoが必要 - プロダクションサーバーでのみ

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: fetch mode requires the colno argument' in /home/username/public_html/admin/lib/database.inc.php:59 

::私は「

$myResult->setFetchMode(PDO::FETCH_COLUMN); 

私は次のエラーを取得する、特定のページで

:私は、彼らがすべてのこの永続的な1のために以外を解決していると考えています私の診断はもともとPDO :: FETCH_COLUMNにフェッチ・モードを設定する必要があったため、列番号を設定する必要がありました。そこには大きな控除はありませんでした。だから私は2番目の引数として0の値を試しました。このページは30秒以上の読み込みに費やされ、PHPのタイムアウトが発生しました。 1の値と同じです。そして、これは成功への道ではないと私は決めました。

本当に困惑しているのは、このサイトがオリジナルのプロダクションサーバーだけでなく、変更なしでローカルのテストマシンで完全に動作することです。古いサーバーの仕様に簡単にアクセスすることはできませんが、私のローカルテストマシンのものは新しいサーバーのものとかなりよく似ています。具体的に

ローカルPHP:5.3.3

リモートPHP:5.3.4

ローカルのMySQL:5.1.37

リモートMySQL:5.0.91

コードがの設定がのように良いことを知っているので、誰かが私が反転できる魔法のスイッチを知っていることを願っています。でもE_ALLに設定するerror_reportingと

--EDIT--

|ローカルマシン上のE_STRICT、このPDO例外は表示されません。

+0

'PDO :: setFetchmode'は、' FETCH_COLUMN'を指定するときに列番号が必要です。他のサーバーで「完全に動作する」という事実は設定上の問題です(例:error_reporting)。それは、文書化された振る舞い以外の方法を使用しているべきではありません。問題はおそらく他のどこかにある。私はこれを5.3.3でテストしましたが、問題はありません。残りのコードはどうですか?あなたのテーブルはどのくらいの大きさでリモートサーバーにありますか? – netcoder

+0

表は<20,000行で、このコードは一度に40行をフェッチするためのものです。 **私はこの混乱を書きませんでした。**このように、私はまだこのことがどう機能するか正確に従おうとしています。 –

答えて

1

解決済み。なぜか、PHPを特定のバージョンにダウングレードすることはお勧めしません。オリジナルの開発者が推奨するように、このトリックを行いました。最近のバージョンではローカルで問題なく動作していたことを心配しないでください。それはちょうど働いた。