商品マスターが動かなくなってしまった

ホーム フォーラム 使い方全般 商品マスターが動かなくなってしまった

このトピックには12件の返信が含まれ、2人の参加者がいます。7 年、 5 ヶ月前 nanbu さんが最後の更新を行いました。

13件の投稿を表示中 - 1 - 13件目 (全13件中)
  • 投稿者
    投稿
  • #50259

    saijo
    参加者

    wordpressのバージョン3.0.3

    welcartのバージョン0.9.1

    MySQL5.1.47、PHP5.2.14

    確認ブラウザFirefox

    サーバーiCLUSTA(i-02)


    こんにちは。

    いつもお世話になっております。

    商品マスターにて商品登録(エクセル一括登録)をしていた所、エラーが出てしまい、商品マスターのページがまったく動かなくなってしまいました。

    ちなみに登録できなくなった時の商品件数は400点程度の時です。

    いろいろと調べた所、どうやらデータベース(SQL)の設定をいじると直るかもしれない様ですが、お恥ずかしいながら、SQLに関しての知識があまり無いので困っています。

    将来的に商品数を数千点まで増やそうと思っているのですが、welcartでは最大何点くらいまで登録可能でしょうか?

    以下出力されたエラーです。

    WordPress database error: [The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay]

    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.term_id 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 post.post_mime_type = ‘item’ AND post.post_type = ‘post’ AND post.post_status <> ‘trash’ GROUP BY post.ID ORDER BY post.ID DESC

    #61499

    nanbu
    参加者

    こんにちは。

    このエラーは仰る通りMySQL の設定によるものですが、もう少しクエリを簡素化できないか検討してみたいと思います。

    Welcart は約5,000までの登録であれば使用できる事を確認しています。もちろんサーバーの処理能力により前後しますが、この数を越えると結構重くなってきます。

    一括登録やデータ出力には時間がかかりますのでタイムアウトを起こす可能性があります。データ数が多い場合は1000点ずつ分けて登録されるのが良いと思います。

    #61500

    saijo
    参加者

    ありがとうございます。

    商品数が5000点ほど登録可能と聞いて安心しました。

    やはりMYSQLなんですね…。

    サーバーの情報を調べてみたら、SQL_MAX_JOIN_SIZEが500000となっていました。

    この場合、SQL_MAX_JOIN_SIZEを上げるかSQL_BIG_SELECTSをONにするか ということになると思うのですが、どちらの方が好ましいのでしょうか?あと、私のSQLの知識が乏しく、見当違いな質問かもしれませんが、Wordpress(welcart)側でSQL_MAX_JOIN_SIZEやSQL_BIG_SELECTSをphpでいじる事は可能でしょうか?

    #61501

    nanbu
    参加者

    可能です。

    usc-e-shop/functions/function.php 内の関数usces_item_uploadcsv() の、global $wpdb, $usces; の下に次の行を追加してみてください。

    $res = $wpdb->query( 'SET SQL_BIG_SELECTS=1' );
    set_time_limit(1800);

    php のタイムリミットを30分に設定していますがこれは自由です。その他のタイムリミットの影響がありますので30分持続する保証は有りません。またセーフモードでは無効です。

    よろしくお願いいたします。

    #61502

    saijo
    参加者

    おはようございます。

    さっそく教えていただいたコードを挿入してみましたが、なぜか商品マスターは動かないまま、商品リストも表示されないままでした…。

    試しに関係ありそうな所にあちこちコードを挿入してみましたが、画面はかわらずでした。

    wp-db.phpなども見てみたのですが、どこを見ていいものか検討がつきませんでした。

    #61503

    saijo
    参加者

    連続投稿すいません。

    今試しにusces_item_master_edit.phpとusces_item_master_list.phpのglobal $wpdb, $usces;下に教えていただいたコードを挿入してみたところ、無事に動きました。

    お騒がせいたしました。

    ありがとうございます。

    #61504

    nanbu
    参加者

    今現在商品リストが表示されないと言う状況でしょうか。

    そういうことでしたら、前回のデータベースエラーの際にデータが壊れてしまった可能性が高いのではと思います。データーベースをクリアして再インストールが必要ではないかと思います。

    再インストールの際、Welcart はDevelopment Version をご利用ください。前回のコメントのコードが既に入っております。

    よろしくお願いいたします。

    #61505

    saijo
    参加者

    説明がわかりずらく申し訳ありません。CSVの一括登録と話が混ざっていました。

    CSVの一括登録をした時からいままでずっと商品マスターのページが商品リストが表示されず、エラーが出たまま固まっていた状態でした。

    それをおしえていただいたコードをusces_item_master_edit.phpとusces_item_master_list.phpに追加してみた所動くようになったという事です。

    現在は商品も無事に表示されています。

    #61506

    nanbu
    参加者

    ああ、コメントのタイミングが行き違いになったようですね。

    動くようになってよかったです。

    #61507

    saijo
    参加者

    こんにちは。

    まだDevelopment Versionはインストールしていないのですが、その後今度はCSVファイルの商品出力時に同じエラーが出るようになってしまいました。

    試しに、plugins/usc-e-shop/functions/utility.phpの

    1400行目あたりの

    function usces_download_item_list() {

    require_once( USCES_PLUGIN_DIR . “/classes/itemList.class.php” );

    global $wpdb, $usces;

    の下に

    $res = $wpdb->query( ‘SET SQL_BIG_SELECTS=1’ );

    set_time_limit(1800);

    を追加してみた所、このエラーは出なくなりましたが、代わりに

    Fatal error: Out of memory (allocated 28835840) (tried to allocate 4104 bytes) in ~~/~/(ファイル名はランダム)

    が出るようになってしまいました。

    php.iniなどでメモリーもいじってみましたが、効果なしでした。

    そこで、現在契約しているサーバーの物理メモリが26Mと、少し少なめなので、こちらを10M程増設を検討中なのです。

    このような対応で間違っていないでしょうか?

    #61508

    nanbu
    参加者

    一般的にWelcart を利用する上では32MB以上を推奨しています。

    22MB+データサイズをおおよその必要メモリーサイズと考えて良いと思います。

    また、データサイズが大きい場合は小分けにしてダウンするのも有効かと思います。

    #61509

    saijo
    参加者

    おはようございます。

    やはり物理メモリが全然足りていないのですね。

    さっそく増設の手続きを進めようと思います。

    ありがとうございます。

    増設後にまたなにかあればご報告いたします。

    あと、商品データを小分けにダウンロードする方法は最新バージョンのwelcartに存在するのでしょうか?オンラインマニュアルなどを見てもその方法がみつけられませんでした。

    #61510

    nanbu
    参加者

    失礼しました。

    現在商品マスターのデータ出力は、検索結果が反映されていなかったのをすっかり忘れていました。検索結果が反映されるように修正したいと思います。

    その上で、重複しないようにカテゴリーごとにDLするなどで分割できるかと思います。

13件の投稿を表示中 - 1 - 13件目 (全13件中)

このトピックに返信するにはログインが必要です。