質問 > 管理機能 > 【Ver.2.11.1】商品マスタ、商品登録でシステムエラー |
管理機能
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
wateg |
投稿日時: 2013/7/18 12:43
対応状況: −−−
|
新米 登録日: 2011/9/7 居住地: 投稿: 5 |
Re: 【Ver.2.11.1】商品マスタ、商品登録でシステムエラー この事例のおかげで助かりました。記載いただきありがとうございます。
一部アレンジさせていただいた部分を 備忘録も兼ねて記載いたします。 ●保存した商品CSVファイルの 『商品ID』については残しました。 (既存のリンクをいかすため) ●『データベース操作(phpMyAdmin)』で以下も空にしました。 (データ量が大きかったので) dtb_class dtb_classcategory dtb_class_combination dtb_class_combination_class_combination_id_seq = 2.11⇒2.12にアップデートしようとしましたが かなり困難でしたので、規格の再登録は発生しますが、 この方法を選択させていただきました。 最終結果を共有いただきありがとうございました。 |
FUDO |
投稿日時: 2011/11/21 14:51
対応状況: 解決済
|
半人前 登録日: 2011/9/27 居住地: 投稿: 23 |
Re: 【Ver.2.11.1】商品マスタ、商品登録でシステムエラー 問題が解決致しましたのでご報告させていただきます。
●エラーが発生した作業 『商品管理』の中の『商品マスタ』で『商品ID』『商品名』『商品コード』『カテゴリ検索』を行うと発生。 また『商品登録』『商品登録CSV』で商品を登録を行っても発生。 ●エラーメッセージ 『システムエラーが発生しました。大変お手数ですが、サイト管理者までご連絡ください。』 ●エラーの原因 1つの規格に規格分類を登録しすぎた事。 そのため『dtb_products_class』テーブルの件数が多くなりすぎた事。 (今回エラーが起きたのは、1つの規格に規格分類200、dtb_products_classテーブル180万件以上) ●行った修復方法 /data/class/SC_Query.php の84行目に$this->query("SET SQL_BIG_SELECTS=1");を追加。 ※エラーメッセージが表示されなくなります。 『商品マスタ』の『CSVダウンロード』もしくは/data/upload/csvから以前アップロードした商品のCSVファイルを保存。 保存した商品CSVファイルの 『商品ID』 『商品規格ID』 『親規格組合わせID』 『規格組合わせID』 『親規格分類ID』 『規格分類ID』 『親規格分類名』 『規格分類名』 規格分類の子となる商品(サイズ違いや色違いなど) を削除。 『システム設定』の中の『パラメータ設定』で『ADMIN_MODE』を1にして、 『商品管理』の中の『商品マスタ』で全商品を選択し『検索結果をすべて削除』で削除。 ※登録商品が全削除されます。 『コンフィングレータ』の『データベース操作(phpMyAdmin)』の 『dtb_best_products』 『dtb_best_products_best_id_seq』 『dtb_products』 『dtb_products_class』 『dtb_products_class_product_class_id_seq』 『dtb_products_product_id_seq』 『dtb_product_categories』 『dtb_product_status』 を『操作』タブの『テーブルを空にする』で削除。 ※商品関連のデータベースが全削除されます。 保存しておいた商品CSVファイルを『商品登録CSV』で登録。 規格分類を1規格あたり20〜30種類ほどに分割。 分割した規格を『商品マスタ』の『商品登録(商品規格)』で登録。 上記の作業を行ってからはシステムエラーの再発はありません。 また高負荷により動作が遅くなるという事も無くなりました。 最後にご返信いただきましたseasoft 様、fukap 様、468 様に再度御礼を申し上げます。 ありがとう御座いました。 |
FUDO |
投稿日時: 2011/11/1 14:47
対応状況: 確認中
|
半人前 登録日: 2011/9/27 居住地: 投稿: 23 |
Re: 【Ver.2.11.1】商品マスタ、商品登録でシステムエラー 468 様 再度ご返信ありがとう御座います。
規格分類の件に関しましては、カラーの種類は30種類以内になってしまうと思いますが、その他の規格分類は20種類以内に収める事ができると思います。 前回お答えいただいた『SET SQL_BIG_SELECTS=1』の位置の件ですが、/data/class/SC_Query.php の84行目に$this->query("SET SQL_BIG_SELECTS=1");を追加して、無事商品検索、商品登録共にシステムエラーが表示されなくなりました。 しかしMySQLの負荷の軽減を行っていない為か、商品検索、商品登録に少し時間がかかっていると感じます。 なのでMySQLの負荷を軽くする為に、一度登録した商品の規格を全て削除しようと思っているのですが、商品マスタの商品登録(商品規格)から規格を削除すればdtb_products_classのテーブルの件数を減らす事ができるのでしょうか? もしテーブルの件数を減らす事ができないのであれば、どうすれば減らす事ができるのでしょうか? ご回答下されば幸いです。 よろしくお願いいたします。 |
468 |
投稿日時: 2011/11/1 10:21
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 【Ver.2.11.1】商品マスタ、商品登録でシステムエラー こんにちは。
dtb_products_classテーブルの件数が180万件というのは、 結構なデータ量だと思いますので、どうしても動きが遅くなると思います。 いままでの書き込みを拝見したところ、 規格分類が多く登録されているようですので、1規格あたり20種類ぐらいまで分類を分割する事は難しいのでしょうか? 管理画面で規格ごとの情報を登録する場合、 規格1、規格2を選択して編集しようとすると、 規格1分類数 × 規格2分類数 の件数だけ入力項目を表示しようとする為、 規格1(200種類)、規格2(200種類)を選択した場合、 200×200=40000件の入力項目を表示しようとして、ブラウザが固まってしまうと思います。 (実際に動作確認していませんので予想ですが・・・) EC-CUBE(特にMYSQLを利用した場合)は、商品数が多い分には負荷で問題が起こる事は少ないのですが、 規格分類の数が多いと、負荷が高まり、動きが鈍くなると感じております。 (以前のバージョンでは、カテゴリーまわりも不安でしたが・・・) 初期化した場合の効果は、あまり期待できないと思います。 |
FUDO |
投稿日時: 2011/10/31 14:42
対応状況: 確認中
|
半人前 登録日: 2011/9/27 居住地: 投稿: 23 |
Re: 【Ver.2.11.1】商品マスタ、商品登録でシステムエラー 468 様 ご返信ありがとう御座います。お返事が遅れて申し訳御座いません。
dtb_products_classテーブルの件数は、約180万件ほど登録されている様です。 初期化の件に関しましては、こちらが「フォーラムでもし解決できなかったらどうすればいいのか」とファーストサーバ株式会社サポートセンター様に問い合わせた所、「現在の状況が改善されなかった場合、こちらではもうサーバー内のデータを全て初期化する事しかできない」とのご回答をいただきました。 特にファーストサーバ株式会社サポートセンター様からはMySQLの負荷の軽減を求められはしませんでしたが、今後の事を考えると軽減できるならば軽減した方が良いかと思います。 MySQLの負荷の軽減は、やはり一度初期化しないと無理なのでしょうか? ご回答下されば幸いです。 よろしくお願いいたします。 |
468 |
投稿日時: 2011/10/29 19:58
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 【Ver.2.11.1】商品マスタ、商品登録でシステムエラー こんばんわ。
ご質問の「SET SQL_BIG_SELECTS」を記述する箇所についてですが、 2.11系では、/data/class/SC_Query.phpの80行目に $this->query("SET SQL_BIG_SELECTS=1"); を追加すれば、よいのではないかと思います。 (2.11.1が手元にないので、もしかしたら記入場所が前後するかもしれませんが・・・) ただ、site.logの内容を拝見したところ、 取り出せるデータ量の限界を超えている旨のエラーが発生している為、 (MAX_JOIN_SIZEの設定値 = MySQLの高負荷防止策) MySQLには想定以上の負荷が発生する可能性があります。 今までこのエラーが発生した事はないのですが、 商品テーブル、規格テーブルなどのデータ件数はいくらぐらい登録されているのでしょうか? (特にdtt_products_classテーブルの件数は?50万件?100万件?とかの規模でしょうか?) あと、現状の改善が無い場合は、サーバーのデータを初期化するという話は、 ファーストサーバーのサポートのほうから連絡が来たのでしょうか? もし、ファーストサーバー側から、MySQLの負荷の軽減を求められているのであれば、 上記の方法では、根本的な解決にならないかと思います。 |
FUDO |
投稿日時: 2011/10/29 18:55
対応状況: 確認中
|
半人前 登録日: 2011/9/27 居住地: 投稿: 23 |
Re: 【Ver.2.11.1】商品マスタ、商品登録でシステムエラー fukap 様 ご返信ありがとう御座います。
データベース内の商品情報に関しては、アドバイス通りデータベース内の全テーブルをエクスポート致しました。 エラーメッセージについては『use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=#』で色々と調べてみました所、どうやら『SC_DbConn.php』の中の『use SET SQL_BIG_SELECTS』の値を1にすればよいのではないかという結論に至りました。 参考にしたURL フォーラム内リンク:http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=7486&forum=10&post_id=36095#forumpost36095 マニュアルサイト:http://wiki.ec-cube.net/index.php?cmd=read&page=%B6%A6%C4%CC%2F3_%A5%AB%A5%B9%A5%BF%A5%DE%A5%A4%A5%BA%2F02_%A5%D5%A5%A1%A5%A4%A5%EB%B9%BD%C0%AE%2F01_data%A5%D5%A5%A9%A5%EB%A5%C0%C6%E2%A4%CE%A5%D5%A5%A1%A5%A4%A5%EB%B9%BD%C0%AE%2F%CA%A3%C0%BD&word=SC_DbConn.php 外部リンク:http://d.hatena.ne.jp/tkman/20100822/1282472014#seemore しかし、上記に記載したフォーラム内リンクでのご質問者様のEC-CUBEのバージョンは2.4.3で、私の使っているバージョンは2.11.1です。 その為なのか、『use SET SQL_BIG_SELECTS』があるという『SC_DbConn.php』が、/www/eccube/data/class の中のどこにも見当たりません。 バージョンが違う為、『use SET SQL_BIG_SELECTS』のある場所が変更になったのでしょうか? もしそうなのだとしたら、『use SET SQL_BIG_SELECTS』のある場所が何処にあるのかをご教示下さらないでしょうか? よろしくお願いいたします。 |
fukap |
投稿日時: 2011/10/29 11:08
対応状況: −−−
|
仙人 登録日: 2009/7/7 居住地: 滋賀県 投稿: 907 |
Re: 【Ver.2.11.1】商品マスタ、商品登録でシステムエラー エラーメッセージの「use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=#」でググるといくつか情報が出てきますよ。
商品情報に関する主要なテーブルは、dtb_products ですが、他にも dtb_product* や dtb_class* など多数ありますので、 データベース内の全テーブルをエクスポートしたらいいのじゃないでしょうか。 |
FUDO |
投稿日時: 2011/10/28 14:23
対応状況: 確認中
|
半人前 登録日: 2011/9/27 居住地: 投稿: 23 |
Re: 【Ver.2.11.1】商品マスタ、商品登録でシステムエラー seasoft 様 ご返信ありがとう御座います。
パラメータ「DEBUG_MODE」を「true」にしてシステムエラーを再現すると、以下のデバッグ情報が表示されました。 ▼▼▼ デバッグ情報ここから ▼▼▼ /virtual/www/eccube/html/admin/products/index.php 34:LC_Page_Admin_Products_Ex->process /virtual/www/eccube/data/class_extends/page_extends/admin/products/LC_Page_Admin_Products_Ex.php 56:LC_Page_Admin_Products->process /virtual/www/eccube/data/class/pages/admin/products/LC_Page_Admin_Products.php 81:LC_Page_Admin_Products->action /virtual/www/eccube/data/class/pages/admin/products/LC_Page_Admin_Products.php 163:LC_Page_Admin_Products->findProducts /virtual/www/eccube/data/class/pages/admin/products/LC_Page_Admin_Products.php 385:SC_Query->select /virtual/www/eccube/data/class/SC_Query.php 153:SC_Query->getAll /virtual/www/eccube/data/class/SC_Query.php 270:SC_Query->execute /virtual/www/eccube/data/class/SC_Query.php 903:trigger_error ▼▼▼ エラーメッセージ ▼▼▼ SQL: PREPARE mdb2_statement_mysql_67fd8f00655d6f982b3a87d3393f8369b74f969d6 FROM 'SELECT product_id, name, main_list_image, status, product_code_min, product_code_max, price02_min, price02_max, stock_min, stock_max, stock_unlimited_min, stock_unlimited_max, update_date FROM ( SELECT dtb_products.product_id, dtb_products.name, dtb_products.maker_id, dtb_products.status, dtb_products.comment1, dtb_products.comment2, dtb_products.comment3, dtb_products.comment4, dtb_products.comment5, dtb_products.comment6, dtb_products.note, dtb_products.main_list_comment, dtb_products.main_list_image, dtb_products.main_comment, dtb_products.main_image, dtb_products.main_large_image, dtb_products.sub_title1, dtb_products.sub_comment1, dtb_products.sub_image1, dtb_products.sub_large_image1, dtb_products.sub_title2, dtb_products.sub_comment2, dtb_products.sub_image2, dtb_products.sub_large_image2, dtb_products.sub_title3, dtb_products.sub_comment3, dtb_products.sub_image3, dtb_products.sub_large_image3, dtb_products.sub_title4, dtb_products.sub_comment4, dtb_products.sub_image4, dtb_products.sub_large_image4, dtb_products.sub_title5, dtb_products.sub_comment5, dtb_products.sub_image5, dtb_products.sub_large_image5, dtb_products.sub_title6, dtb_products.sub_comment6, dtb_products.sub_image6, dtb_products.sub_large_image6, dtb_products.del_flg, dtb_products.creator_id, dtb_products.create_date, dtb_products.update_date, dtb_products.deliv_date_id, T4.product_code_min, T4.product_code_max, T4.price01_min, T4.price01_max, T4.price02_min, T4.price02_max, T4.stock_min, T4.stock_max, T4.stock_unlimited_min, T4.stock_unlimited_max, T4.point_rate, T4.deliv_fee, T4.class_count FROM dtb_products JOIN ( SELECT product_id, MIN(product_code) AS product_code_min, MAX(product_code) AS product_code_max, MIN(price01) AS price01_min, MAX(price01) AS price01_max, MIN(price02) AS price02_min, MAX(price02) AS price02_max, MIN(stock) AS stock_min, MAX(stock) AS stock_max, MIN(stock_unlimited) AS stock_unlimited_min, MAX(stock_unlimited) AS stock_unlimited_max, MAX(point_rate) AS point_rate, MAX(deliv_fee) AS deliv_fee, COUNT(*) as class_count FROM dtb_products_class WHERE del_flg = 0 GROUP BY product_id ) AS T4 ON dtb_products.product_id = T4.product_id ) AS alldtl WHERE del_flg = 0 AND product_id IN (SELECT product_id FROM dtb_product_categories WHERE category_id IN (?,?,?,?,?,?,?,?,?)) ORDER BY update_date DESC LIMIT 10 OFFSET 0' MDB2 Error: unknown error _doQuery: [Error message: Could not execute statement] [Last executed query: EXECUTE mdb2_statement_mysql_67fd8f00655d6f982b3a87d3393f8369b74f969d6 USING @0, @1, @2, @3, @4, @5, @6, @7, @8] [Native code: 1104] [Native message: 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] /virtual/www/eccube/html/admin/products/index.php 34:LC_Page_Admin_Products_Ex->process /virtual/www/eccube/data/class_extends/page_extends/admin/products/LC_Page_Admin_Products_Ex.php 56:LC_Page_Admin_Products->process /virtual/www/eccube/data/class/pages/admin/products/LC_Page_Admin_Products.php 81:LC_Page_Admin_Products->action /virtual/www/eccube/data/class/pages/admin/products/LC_Page_Admin_Products.php 163:LC_Page_Admin_Products->findProducts /virtual/www/eccube/data/class/pages/admin/products/LC_Page_Admin_Products.php 385:SC_Query->select /virtual/www/eccube/data/class/SC_Query.php 153:SC_Query->getAll /virtual/www/eccube/data/class/SC_Query.php 270:SC_Query->execute /virtual/www/eccube/data/class/SC_Query.php 888:MDB2_Statement_Common->execute /virtual/www/eccube/data/module/MDB2.php 4152:MDB2_Statement_mysql->_execute /virtual/www/eccube/data/module/MDB2/Driver/mysql.php 1654:MDB2_Driver_mysql->_doQuery /virtual/www/eccube/data/module/MDB2/Driver/mysql.php 798:MDB2_Driver_Common->raiseError /virtual/www/eccube/data/module/MDB2.php 1497:PEAR->raiseError /virtual/www/eccube/data/module/PEAR.php 557:MDB2_Error->MDB2_Error /virtual/www/eccube/data/module/MDB2.php 1009:PEAR_Error->PEAR_Error ▲▲▲ エラーメッセージ ▲▲▲ ▲▲▲ デバッグ情報ここまで ▲▲▲ しかし私の知識不足の為、このエラーの対処方法が分かりません。 どなたかよろしければ、どこのファイルをどの様に修正すればよいのかをご教示いただければ幸いです。 よろしくお願いいたします。 |
seasoft |
投稿日時: 2011/10/27 19:03
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: 【Ver.2.11.1】商品マスタ、商品登録でシステムエラー 超斜め読みです。
外していたら、ゴメンなさい。 /data/logs/site.log を参照するのが吉な予感。 私の古いメモ書きですが、これも参考になるかもしれません。 http://seasoft.jp1.cx/ec/tips/error#システムエラーが発生しました_大変お手数ですが_サイト管理者までご連絡ください
|
(1) 2 » |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |