バージョン選択

フォーラム

メニュー

オンライン状況

80 人のユーザが現在オンラインです。 (71 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 80
もっと...

サイト内検索

質問 > 管理機能 > 大量の規格登録でエラーが出るが、規格を削除したら

管理機能

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
nanasess
投稿日時: 2020/6/30 18:07
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2313
Re: 大量の規格登録でエラーが出るが、規格を削除したら
無事解決できてよかったです。
カテゴリは多重アクセスなどで不整合を起しやすいので、プラグインとの兼ね合いで不整合になってしまったのかもしれませんね。
horai
投稿日時: 2020/6/29 21:22
対応状況: 解決済
半人前
登録日: 2013/3/20
居住地:
投稿: 15
Re: 大量の規格登録でエラーが出るが、規格を削除したら
>nanasess さん

いろいろアドバイスをいただきありがとうございました。

こちら解決しました。

解決した過程ですが
・Parent_category_idがおかしいカテゴリーのParent_category_idを修正する(今回の場合Catgory_idが141が対象)

・商品登録はできるようになったが規格の修正はタイムアウトから「MDB2 Error: constraint violation」のエラーに変わる

トライアンドエラーで調べたら、唯一入れている会員価格プラグインをオフにすると動くことが判明

プラグインのバージョンアップを行う

規格更新が回復


という感じでした。

クライアントのヒアリングにより、141のカテゴリーの項目名を変更したらシステムエラーが出るようになったそうなのですが、何が引き金になったのかがいまいちわかりませんが・・・

長々と質問を続けてしまい、ご迷惑をおかけいたしました。
最初のプラグインのコンフリクトというアドバイスに立ち返り、
何とか危機を脱出できました。
horai
投稿日時: 2020/6/27 1:33
対応状況: −−−
半人前
登録日: 2013/3/20
居住地:
投稿: 15
Re: 大量の規格登録でエラーが出るが、規格を削除したら
>nanasessさん

何度もご回答いただきありがとうございます。

少しだけ進展がありましたのでご連絡いたします。

DBとファイルをコピーしてテスト用の同環境を作り
内容を空にするなどしてトライ&エラーを繰り返していたところ、
dtb_categoryを空にしたところ
今までタイムアウトで動かなかった商品登録の処理が完了まで動きました。

dtb_categoryを確認したところ、最後の方に

141
セール
141
2
21
4
2020-06-15 16:22:41.000000
2020-06-16 13:33:14.000000

142
セール
34
2
21
4
2020-06-16 13:41:35.000000
2020-06-16 13:47:35.000000

と141のParent_category_idに141という数字が入っており違和感があったので
管理画面を見てみたところ、141のカテゴリはどこにも存在していません。
phpMyAdminから141のParent_category_idを142とおなじ34にしたところ、
(わかりやすくセール2と名前を変えてみました)
商品登録の処理は動くようになりました。
管理画面にも34のカテゴリの下に141のセール2が表示されるようになりました。


上記の内容を反映させたうえで規格の方でテストしたところ、
タイムアウトではなく以下のような内容のエラーが出るようになりました。
※商品ID889でテストしています


ただ、141のカテゴリーは当初表示されてなかったのがきになったので
今一度修正前のDBに戻して確認してみたところ、

・DBのdtb_category上にはParent_category_idに141がはいっている
・管理画面「カテゴリ登録」には141のカテゴリは存在していない
・商品マスターや商品登録時のカテゴリーのドロップダウンメニューには141のカテゴリーが入っている
・この141に対し、何かアクション(Parent_category_idを書き換える、商品登録の際141を選択する)と
 商品登録の処理が完了するようになるが、規格のエラーがタイムアウトから以下のエラーになる

ということがわかりました。
おそらくはこの141のカテゴリーが何らかの原因の引き金になってると思うのですが、
この141が起こす現象を止めることはできないでしょうか。

分かりづらい内容で問題ありません。


-+-+-+-+-+-+-+-+-

Fatal error(E_USER_ERROR): DB処理でエラーが発生しました。
SQL: [PREPARE mdb2_statement_mysql_16882c6b80a489ab4ac56d4fe73de8b0ef585f9c85c FROM 'INSERT INTO dtb_products_class(classcategory_id1,classcategory_id2,product_code,stock,price01,plg_memberprice_price03,product_type_id,down_filename,down_realfilename,product_id,sale_limit,deliv_fee,point_rate,stock_unlimited,price02,creator_id,update_date,del_flg,create_date,product_class_id) SELECT ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,CURRENT_TIMESTAMP,?,CURRENT_TIMESTAMP,?']
PlaceHolder: [array (
0 => NULL,
1 => NULL,
2 => NULL,
3 => NULL,
4 => NULL,
5 => NULL,
6 => 0,
7 => NULL,
8 => '',
9 => '889',
10 => NULL,
11 => NULL,
12 => '0',
13 => 0,
14 => 0,
15 => '2',
16 => 1,
17 => 8691925,
)]
MDB2 Error: constraint violation
_doQuery: [Error message: Could not execute statement]
[Last executed query: EXECUTE mdb2_statement_mysql_16882c6b80a489ab4ac56d4fe73de8b0ef585f9c85c USING @0, @1, @2, @3, @4, @5, @6, @7, @8, @9, @10, @11, @12, @13, @14, @15, @16, @17]
[Native code: 1062]
[Native message: Duplicate entry '889-0-0' for key 'product_id']
on [/home/users/2/●/web/▼/■/shop/data/class/SC_Query.php(1008)] from ***.***.***.***
login_id = huconnect(0)[2hukg6ei62tc2oi6lt1nisj3o0]
/home/users/2/●/web/▼/■/shop/admin/products/product_class.php(34): LC_Page_Admin_Products_ProductClass_Ex->process
/home/users/2/●/web/▼/■/shop/data/class_extends/page_extends/admin/products/LC_Page_Admin_Products_ProductClass_Ex.php(56): LC_Page_Admin_Products_ProductClass->process
/home/users/2/●/web/▼/■/shop/data/class/pages/admin/products/LC_Page_Admin_Products_ProductClass.php(64): LC_Page_Admin->sendResponse
/home/users/2/●/web/▼/■/shop/data/class/pages/admin/LC_Page_Admin.php(101): SC_Helper_Plugin->doAction
/home/users/2/●/web/▼/■/shop/data/class/helper/SC_Helper_Plugin.php(115): call_user_func_array
(): MemberPrice->admin_products_productclass_after
/home/users/2/●/web/▼/■/shop/data/downloads/plugin/MemberPrice/MemberPrice.php(355): MemberPrice->registerProductClassMemberPrice
/home/users/2/●/web/▼/■/shop/data/downloads/plugin/MemberPrice/MemberPrice.php(633): SC_Query->insert
/home/users/2/●/web/▼/■/shop/data/class/SC_Query.php(530): SC_Query->query
/home/users/2/●/web/▼/■/shop/data/class/SC_Query.php(814): SC_Query->execute
/home/users/2/●/web/▼/■/shop/data/class/SC_Query.php(971): SC_Query->error
/home/users/2/●/web/▼/■/shop/data/class/SC_Query.php(1008): trigger_error

nanasess
投稿日時: 2020/6/26 15:24
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2313
Re: 大量の規格登録でエラーが出るが、規格を削除したら
17日と18日の違いが気になりますね
horai
投稿日時: 2020/6/26 11:10
対応状況: −−−
半人前
登録日: 2013/3/20
居住地:
投稿: 15
Re: 大量の規格登録でエラーが出るが、規格を削除したら
>nanasessさん

ご回答ありがとうございます。

一度クローン取ってテストしてみます。


クライアントにこの現象の確認をしたところ、
・6/17までは平常通り動いていた
・6/18の10時ごろに通常の在庫調整をやっていたらエッジでエラーが出たので、クロームに切り替えたら動いたのでクロームで処理した
11時過ぎからクロームでもエラーが出た。在庫だけじゃなく商品データーも編集できなくなった
という流れのようです。
特に18日にプラグインを入れたとか何か独自カスタムを入れたとかはなさそうです。

なお、現時点で入れているプラグインで有効になってるのは
会員価格設定
のみでした(有効化してないプラグインはいくつかありますが)
nanasess
投稿日時: 2020/6/25 18:38
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2313
Re: 大量の規格登録でエラーが出るが、規格を削除したら
データベースの肥大化より、何らかの処理が競合しているのだと思います。。。
あまり見ないケースですので、プラグインや独自カスタマイズが原因の可能性もあります。
horai
投稿日時: 2020/6/25 18:28
対応状況: −−−
半人前
登録日: 2013/3/20
居住地:
投稿: 15
Re: 大量の規格登録でエラーが出るが、規格を削除したら
>nanasess 様

ご回答ありがとうございます。

頂いた回答から、今一度テストしてみました。
かなり処理の時間をかけたのち、サーバーから

Gateway Timeout
The gateway did not receive a timely response from the upstream server or application.

が返ってきました。


二つ前のエラー内容の時間帯のアクセス状況を確認したところ
ページへのアクセスはありましたが、購入動作のログは残っていませんでした。(受注記録もなし)

やはり肥大化したデーターベースが原因でしょうか。
nanasess
投稿日時: 2020/6/25 17:33
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2313
Re: 大量の規格登録でエラーが出るが、規格を削除したら
Lock wait timeout exceeded と出ていますので、MySQLがデッドロック状態になっているようです。
在庫更新と同時に、フロント側で商品購入されているといった状況になっていませんでしょうか?
horai
投稿日時: 2020/6/25 17:16
対応状況: −−−
半人前
登録日: 2013/3/20
居住地:
投稿: 15
Re: 大量の規格登録でエラーが出るが、規格を削除したら
>nanasessさん

ご回答ありがとうございます。

頂いた回答を踏まえたうえで、規格1から不要な企画を削除し(107個→55個)まで減らし、念のために不要な商品も削除し(212→160)して、ご教授頂いただいた
data/class/pages/admin/order/LC_Page_Admin_Order_Edit.php
data/class/pages/admin/products/LC_Page_Admin_Products_ProductClass.php
の修正を当ててみました。

当ててからの動作はシステムエラーなどなく動いています。
何となくかもしれませんが、動作が早くなった気もします。

ただ、やはり規格メニューからの在庫入力保存処理(テストなので変更せずにそのまま保存)を行ったところ、確認画面から「保存を行う」からの処理で長くかかり、タイムアウトを起こしてシステムエラーが出ました。

念のためにPCの再起動もかけて再度確認しましたが、状況変わらず。

保存ボタンを押す前に在庫数を変更してみたのですが、
エラー後確認したところその変更は反映していませんでした。


なお現時点のさくらのphp.iniは
max_input_vars = 5000000
memory_limit = 128M
post_max_size = 120M
max_execution_time = 1000
としています。

※アドバイス頂いたPHPのモジュールモード変更ですが
 ほかのサイトも入っているのですぐには対応が難しい内容のため、
 今回は行っておりません。

以下、ECcubeのエラーログに出た内容を転載します。


↓↓↓↓↓↓↓↓↓↓↓↓↓↓
※規格1×規格2の組み合わせ1個を保存した時のエラー

/shop/admin/products/product_class.php


Fatal error(E_USER_ERROR): DB処理でエラーが発生しました。
SQL: [PREPARE mdb2_statement_mysql_151009eee17ba12a4079085612d790c097bdaf4bdf FROM 'DELETE FROM dtb_products_class WHERE product_class_id = ?']
PlaceHolder: [array (
0 => '8600199',
)]
MDB2 Error: unknown error
_doQuery: [Error message: Could not execute statement]
[Last executed query: EXECUTE mdb2_statement_mysql_151009eee17ba12a4079085612d790c097bdaf4bdf USING @0]
[Native code: 1205]
[Native message: Lock wait timeout exceeded; try restarting transaction]
on [/home/●/www/▲/shop/data/class/SC_Query.php(1008)] from ***.***.***
login_id = ●(0)[77fcc0a54452bafc63a717724b34f535]
/home/●/www/▲/shop/admin/products/product_class.php(34): LC_Page_Admin_Products_ProductClass_Ex->process
/home/●/www/▲/shop/data/class_extends/page_extends/admin/products/LC_Page_Admin_Products_ProductClass_Ex.php(56): LC_Page_Admin_Products_ProductClass->process
/home/●/www/▲/shop/data/class/pages/admin/products/LC_Page_Admin_Products_ProductClass.php(63): LC_Page_Admin_Products_ProductClass->action
/home/●/www/▲/shop/data/class/pages/admin/products/LC_Page_Admin_Products_ProductClass.php(148): LC_Page_Admin_Products_ProductClass->registerProductClass
/home/●/www/▲/shop/data/class/pages/admin/products/LC_Page_Admin_Products_ProductClass.php(292): SC_Query->delete
/home/●/www/▲/shop/data/class/SC_Query.php(746): SC_Query->query
/home/●/www/▲/shop/data/class/SC_Query.php(814): SC_Query->execute
/home/●/www/▲/shop/data/class/SC_Query.php(971): SC_Query->error
/home/●/www/▲/shop/data/class/SC_Query.php(1008): trigger_error




↓↓↓↓↓↓↓↓↓↓↓↓↓↓
※規格1×規格2の組み合わせ2個を保存しようとしたときのエラー

/shop/admin/products/product_class.php



Fatal error(E_USER_ERROR): DB処理でエラーが発生しました。
SQL: [PREPARE mdb2_statement_mysql_15ab029d22af1522c88ccd52f073dd0e899cdeef09 FROM 'UPDATE dtb_products_class SET classcategory_id1= ?, classcategory_id2= ?, product_code= ?, stock= ?, price01= ?, product_type_id= ?, down_filename= ?, down_realfilename= ?, product_id= ?, sale_limit= ?, deliv_fee= ?, point_rate= ?, stock_unlimited= ?, price02= ?, creator_id= ?, update_date= CURRENT_TIMESTAMP, del_flg= ?, create_date= CURRENT_TIMESTAMP WHERE product_class_id = ?']
PlaceHolder: [array (
0 => '3',
1 => '13',
2 => '10835',
3 => '99',
4 => '24000',
5 => '1',
6 => '',
7 => '',
8 => '718',
9 => NULL,
10 => NULL,
11 => '0',
12 => 0,
13 => '24000',
14 => '2',
15 => 0,
16 => '8386994',
)]
MDB2 Error: unknown error
_doQuery: [Error message: Could not execute statement]
[Last executed query: EXECUTE mdb2_statement_mysql_15ab029d22af1522c88ccd52f073dd0e899cdeef09 USING @0, @1, @2, @3, @4, @5, @6, @7, @8, @9, @10, @11, @12, @13, @14, @15, @16]
[Native code: 1205]
[Native message: Lock wait timeout exceeded; try restarting transaction]
on [/home/●●●/www/▲▲▲/shop/data/class/SC_Query.php(1008)] from ***.***.***
login_id = ●●●(0)[77fcc0a54452bafc63a717724b34f535]
/home/●●●/www/▲▲▲/shop/admin/products/product_class.php(34): LC_Page_Admin_Products_ProductClass_Ex->process
/home/●●●/www/▲▲▲/shop/data/class_extends/page_extends/admin/products/LC_Page_Admin_Products_ProductClass_Ex.php(56): LC_Page_Admin_Products_ProductClass->process
/home/●●●/www/▲▲▲/shop/data/class/pages/admin/products/LC_Page_Admin_Products_ProductClass.php(63): LC_Page_Admin_Products_ProductClass->action
/home/●●●/www/▲▲▲/shop/data/class/pages/admin/products/LC_Page_Admin_Products_ProductClass.php(148): LC_Page_Admin_Products_ProductClass->registerProductClass
/home/●●●/www/▲▲▲/shop/data/class/pages/admin/products/LC_Page_Admin_Products_ProductClass.php(289): SC_Query->update
/home/●●●/www/▲▲▲/shop/data/class/SC_Query.php(589): SC_Query->query
/home/●●●/www/▲▲▲/shop/data/class/SC_Query.php(814): SC_Query->execute
/home/●●●/www/▲▲▲/shop/data/class/SC_Query.php(971): SC_Query->error
/home/●●●/www/▲▲▲/shop/data/class/SC_Query.php(1008): trigger_error
nanasess
投稿日時: 2020/6/25 12:17
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2313
Re: 大量の規格登録でエラーが出るが、規格を削除したら
2.12.2 にコピペで適用できるか、あまり自信ありませんが、基本的なロジックは同じはずです。
適用の際は、十分に動作確認をお願い致します。

データ量よりも、PHPの処理スピードが問題になっている気がしますので、規格1を減らすことは有効だと思います

ちなみに、さくらのレンタルサーバーでは、モジュールモードのPHPとCGIモードのPHPがありますが、どちらをご利用でしょうか?
CGIモードをご利用でしたら、モジュールモードにすることで改善する可能性はあります。
(1) 2 »
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,865名です
総投稿数は109,998件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1295
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.