アプリの Web サービスとして、まったく同じ PHP スクリプトを 2 つの異なるサーバーで実行しています。1 つはすべてのクエリを実行し (5.3.15 を実行)、もう 1 つは特定のクエリを実行しません (5.3.10 を実行)。一部のクエリを実行するように指示すると、サーバー エラーが発生します。
5.3.15 を実行しているマシンは mac os x lion マシンで、もう 1 つは ubuntu 12.04 です。
何がうまくいかないのか、何か考えがありますか。クエリの例を 2 つ示します。最初のものはphp 5.3.10で動作し、2番目のものは動作しません。
働く:
$stmt = $this->db->prepare("SELECT DISTINCT b.id
FROM a
LEFT JOIN b
ON a.item_id = v.id
INNER JOIN c
ON a.id = c.item_id
LEFT JOIN d
ON c.status_id = d.id
WHERE d.property = 1");
サーバーエラー:
$stmt = $this->db->prepare("SELECT a.id AS id, d.ordering AS ordering,
d.name AS name2,
a.service_id AS service_id, b.name AS name,
c.name AS name1, a.due_date AS due_date,
d.status AS status
FROM a INNER JOIN b
ON a.title_id = b.id
LEFT JOIN c
ON b.tv_show_id = c.id
LEFT JOIN d
ON a.status_id = d.id
WHERE b.provider_id = ?
AND (b.film_id= ? OR b.name
LIKE CONCAT('%', ?, '%') OR c.name
LIKE CONCAT('%', ?, '%')) LIMIT 2000");
注:私はこれらのクエリに対するあらゆる種類の批判を非常に受け入れていますが、私が面倒だと言っている、またはSQLを読む必要があるとだけ言っている回答は、私にはあまり役に立ちません. また、データベース名は実際には単なる文字ではなく、セキュリティ上の理由から変更しています。
コードは(すべての名前を変更してすぐに解体する前に)php 5.3.15で問題なく実行されるため、問題は使用されている関数または何かにある可能性が最も高い.
エラーが意味をなさない場合、他に何が問題になっている可能性がありますか? クエリを mysql コンソールで直接実行したところ、完全に機能しましたが、bound_params をバインドして、渡された変数に基づいて実行すると、2 番目のクエリが失敗します。どんな助けでも大歓迎です!!
編集:
エラーメッセージは次のとおりです: SIGTERM をキャッチしました。シャットダウンしています - 調査します。助けてくれたすべてのコメンターに感謝します!