質問 > 管理機能 > dbエラー[Column 'status' in where clause is ambiguous] |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
l58 |
投稿日時: 2017/11/27 17:56
対応状況: −−−
|
常連 登録日: 2015/2/15 居住地: 投稿: 36 |
dbエラー[Column 'status' in where clause is ambiguous] [EC-CUBE] 2.13.5
[レンタルサーバ] WADAX [OS] win7 [PHP] 5.3.3 [データベース] MySQL 5.1.73 [WEBサーバ] Apache いつもお世話になっております。 受注管理のプラグイン(受注管理効率化プラグイン <a href="https://www.ec-cube.net/products/detail.php?product_id=428" target="_blank">https://www.ec-cube.net/products/detail.php?product_id=428)を導入したところ、 [Native message: Column 'status' in where clause is ambiguous] とシステムエラーになります。 エラー内容は下記の通りです。 Fatal error(E_USER_ERROR): DB処理でエラーが発生しました。 SQL: [SELECT dtb_order.*, case when dtb_order.payment_id = dtb_payment.payment_id then 1 else 0 end as bComplete FROM dtb_order left join dtb_payment on dtb_order.payment_id = dtb_payment.payment_id and dtb_payment.module_code = 'mdl_asjpayment' WHERE dtb_order.del_flg = 0 AND status = ? ORDER BY dtb_order.update_date DESC ] MDB2 Error: unknown error _doQuery: [Error message: Could not execute statement] [Last executed query: PREPARE mdb2_statement_mysql_22877c1a458ceb4cca2834bb1bfee5918f6dda0349 FROM 'SELECT dtb_order.*, case when dtb_order.payment_id = dtb_payment.payment_id then 1 else 0 end as bComplete FROM dtb_order left join dtb_payment on dtb_order.payment_id = dtb_payment.payment_id and dtb_payment.module_code = \'mdl_asjpayment\' WHERE dtb_order.del_flg = 0 AND status = ? ORDER BY dtb_order.update_date DESC LIMIT 0, 100'] [Native code: 1052] [Native message: Column 'status' in where clause is ambiguous] on ***/data/class/SC_Query.php(1095)] ***/admin/order/index.php(29): LC_Page_Admin_Order_Ex->process ***/data/class_extends/page_extends/admin/order/LC_Page_Admin_Order_Ex.php(50): LC_Page_Admin_Order->process ***/data/class/pages/admin/order/LC_Page_Admin_Order.php(83): LC_Page_Admin->sendResponse ***/data/class/pages/admin/LC_Page_Admin.php(104): SC_Helper_Plugin->doAction ***/data/class/helper/SC_Helper_Plugin.php(145): call_user_func_array (): plg_OrderSort_LC_Page_Admin_Order_Ex::after ***/data/downloads/plugin/OrderSort/class/213/plg_OrderSort_LC_Page_Admin_Order_Ex.php(44): plg_OrderSort_LC_Page_Admin_Order::after ***/data/downloads/plugin/OrderSort/class/plg_OrderSort_LC_Page_Admin_Order.php(152): LC_Page_Admin_Order_Ex->findOrders ***/data/class_extends/page_extends/admin/order/LC_Page_Admin_Order_Ex.php(472): SC_Query->select ***/data/class/SC_Query.php(176): SC_Query->getAll ***/data/class/SC_Query.php(304): SC_Query->prepare ***/class/SC_Query.php(1024): SC_Query->error ***/data/class/SC_Query.php(1095): trigger_error 確かにstatusというカラムが他のテーブルにも存在しているのはわかったのですが、sqlの知識が乏しく、具体的にどのように修正すればよいのかわかりません。 ご教授頂けますと幸いです。 宜しくお願い致します。 |
468 |
投稿日時: 2017/11/28 10:47
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: dbエラー[Column 'status' in where clause is ambiguous] プラグインの配布元に確認していただくのが確実かと思いますが、
エラーログを見る限りでは、 /data/downloads/plugin/OrderSort/class/plg_OrderSort_LC_Page_Admin_Order.php 152行目の前に クエリーを組み立てている処理があると思います。 $objQuery->setWhere のような記述があれば、そこがSQLのWHERE句を指定しているところになります。 setWhereへの引数に"status"を配列か文字列で渡していると思いますので、"dtb_order.status"か"dtb_payment.status"に変更すれば、 エラーは無くなるのではないでしょうか? (多分、dtb_orderと思いますが、 dtb_orderとdtb_paymentのどちらが正解なのか、前後の処理や該当の画面を見ないとわからないです。)
|
l58 |
投稿日時: 2017/12/6 0:38
対応状況: −−−
|
常連 登録日: 2015/2/15 居住地: 投稿: 36 |
Re: dbエラー[Column 'status' in where clause is ambiguous] ご連絡ありがとうございます。
ASJペイメントの決済モジュールとの競合で起こっていたようでした。 プラグインの配布元様に問い合わせたところ、 downloads/plugin/OrderSort/class/plg_OrderSort_LC_Page_Admin_Order.php の122行目 $objPage->buildQuery($key, $where, $arrWhereVal, $objFormParam); という行を $objPage->myBuildQuery($key, $where, $arrWhereVal, $objFormParam); に変更したところ、解決しました。 ASJペイメントの決済モジュールを導入している場合の競合調整方法になります。同じ箇所でエラーになっている方のために、念のため記載しておきます。 ありがとうございました。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |