[未解決] 検索項目から検索するとエラーになる
-
投稿者投稿
-
2011年2月18日 5:39 AM #50272hide参加者
Welcart のバージョン:バージョン 0.8.1
症状を確認したブラウザ:IE8 firefox3.5.9
サーバー(会社名、サービス名):クララオンライン
SSLの利用: 無し
WordPress のパーリンク設定:/%post_id%
MYSQLバージョン:5.0.77
商品マスターから検索項目で検索しようとすると下記のエラーが発生します。カテゴリーや商品状態で検索してもメッセージは同じです。
WordPress database error: [You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 18]
SELECT mc.meta_value AS item_code, mn.meta_value AS item_name, meta.meta_key AS sku_key, meta.meta_value AS sku_value, te.name AS category, post.post_status, CASE post.post_status WHEN 'publish' THEN '公開済み' WHEN 'future' THEN '予約済み' WHEN 'draft' THEN '下書き' WHEN 'pending' THEN 'レビュー待ち' WHEN 'trash' THEN 'ゴミ箱' ELSE '非公開' END AS display_status, post.post_type, post.post_mime_type, post.ID FROM wp_posts AS post LEFT JOIN wp_postmeta AS mc ON post.ID = mc.post_id AND mc.meta_key = '_itemCode' LEFT JOIN wp_postmeta AS mn ON post.ID = mn.post_id AND mn.meta_key = '_itemName' LEFT JOIN wp_postmeta AS meta ON post.ID = meta.post_id AND SUBSTRING(meta.meta_key, 1, 6) = '_isku_' LEFT JOIN wp_term_relationships AS tr ON tr.object_id = post.ID LEFT JOIN wp_term_taxonomy AS tt ON tt.term_taxonomy_id = tr.term_taxonomy_id LEFT JOIN wp_terms AS te ON te.term_id = tt.term_id WHERE te.name = 'お勧め商品' AND post_status <> 'trash' AND post.post_mime_type = 'item' AND post.post_type = 'post' GROUP BY post.ID ORDER BYクララオンラインでの制作は初めてなのですが、そちらが原因なのでしょうか?
https://www.welcart.com/forum/topic.php?id=411
とも関連がありそうですが。
2011年2月19日 12:19 AM #61524nanbuキーマスターこんにちは。
ORDER BY の後のカラムが無くなっていますね。
なぜその様になるかはこちらでは判らないのですが、最新版でも同じ状況でしょうか。
2011年2月21日 1:53 AM #61525hide参加者こんにちは。
0.9.3にバージョンアップしましたが、同様のエラーが発生しました。解決方法は無いでしょうか?
2011年2月21日 3:05 AM #61526nanbuキーマスター有効かどうかわかりませんが、usc-e-shop/includes/usces_item_master_list.php の冒頭のglobal $wpdb; の下に次のコードを追加するとどうなるでしょうか。
$wpdb->query( 'SET SQL_BIG_SELECTS=1' );
2011年2月22日 10:10 AM #61527hide参加者こんにちは、指定のコードを入れてみましたが変化なしでした。
作り始めなので、データベースから作り直してみることにします。
2011年2月28日 8:46 AM #61528saijo参加者
wordpressのバージョン3.0.3
welcartのバージョン0.9.1
MySQL5.1.47、PHP5.2.14
確認ブラウザFirefox
サーバーiCLUSTA(i-02)
こんにちは。
横からですが失礼します。
私も全く同じエラーが年末くらいから頻繁に出て困っていました。
実は今日まで同じエラーが頻繁に出ていたのですが、たまたま今日、商品名がかなり長かった(60文字前後)モノが数十点あったため、すべて20文字前後に短く統一した所、なぜかエラーがまったく出なくなりました。
今日は特にバージョンアップや変わった作業などはしていませんので、おそらく(私の場合)それが原因だったのだと思いますが、私自身がPHP/SQLにあまり詳しくないため本当にこれが原因なのかは断言できません。
参考程度にお願いいたします。
あとwelcartの作者様、このトピックを見ていましたら、このあたりの検証などよろしくお願いしたいです。
2011年3月1日 12:55 AM #61529nanbuキーマスターこんにちは。
商品名の文字数は問題ないはずです。もしかしたらクオート(’)やカンマ(,)、特殊文字などが問題なのかも知れません。一度調べてみます。
話が横にそれますが、他のシステムから移行される方のデータを拝見しますと、商品名が非常に長いデータをしばしば見られます。これは商品名をページタイトルとしているシステム用のSEO 対策の一環かと思いますが、Welcart には商品名とは別にページタイトルを持っていますので、SEO 用の長いタイトルはページタイトルを利用し、商品名は純粋に商品名にするのが良いかと思います。
2011年3月1日 2:05 AM #61530nanbuキーマスター確認しましたが、やはり文字の問題ではなさそうです。
エラーが出たクエリーを見ると、ORDER BY 以降が空白となっているようですが、このORDER BY の値はセッションから取って来ます。セッションから取るものにはこの他、100/300件 とリスト左肩に表示されている行数もセッションから取得しています。もし、この行数も見えないのであればセッションが切れてしまっている可能性があります。
2011年3月1日 5:32 AM #61531saijo参加者nambu様
検証ありがとうございます。
本日作業をしていたら、また数回に一回程度の割合でこのエラーが出るようになっていました…昨日はたまたまサーバーの具合でもよかったのでしょうか(汗
あと、お聞きしたいのですが、セッションが切れてしまう現象というのはどのような時に起きやすいのでしょうか?
なにか良い対処法などはあるのでしょうか?
2011年3月1日 10:06 AM #61532nanbuキーマスターセッションの保存期間がタイムアウトした時にセッション切れとなります。サーバーによりますが数十分から数時間でしょうか。php.ini で設定しますが初期値が数秒などと言うことはまず無いと思います。phpinfo() で確認する事ができます。
あと可能性は低いですが、セッションを利用している他のプラグインが存在しているかどうかです。
効き目があるかどうか分かりませんが、次の1行をconfig.php のデータベース名の上辺りに追加してみてください。
define('USCES_KEY', 'mysitekey');
mysitekey は任意の文字列です。セッションIDに適用されます。
2011年3月2日 7:05 AM #61533saijo参加者nanbu様
ありがとうございます。
さっそくコードを指定の場所に入れてみましたが、特に変化はなかった模様です。(再現率が2割くらい?)
ちなみにサーバーのセッション保存期間は24分(1460)でした。
phpinfo()でいろいろ見てみましたが特に問題は無さそうでした。
しばらくphp.iniなどでサーバー設定をいろいろ試してみます…。
2011年3月3日 5:06 AM #61534nanbuキーマスターそうですかあ。
何かほかに原因があるのかもしれません。こちらでも一度じっくり調査してみたいと思います。
-
投稿者投稿
- このトピックに返信するにはログインが必要です。