シェアする

  • このエントリーをはてなブックマークに追加

[MySQL]クエリログを保存する

理由あって、EC-CUBEの商品登録処理をハックすることになりました。
別のアプリケーションで生成した商品情報を利用して、EC-CUBEの商品を作成するというものです。

EC-CUBEにはCSVから商品登録する機能もあるのですが、登録後にEC-CUBE側のproduct_id、product_class_idも取得したいので、手間を減らすために登録処理を作っちまおうというわけです。

で、EC-CUBEのソースを読んでみたのですが、商品の登録処理はこんな感じのようです。

商品登録時に更新されるテーブル

	商品情報
		dtb_products
	商品カテゴリ関連
		dtb_product_categories
	商品ステータス情報
		dtb_product_status
	商品規格情報
		dtb_products_class
	カテゴリ商品数情報
		dtb_category_count
	カテゴリ商品合計数情報
		dtb_cateory_total_count
		
商品登録の処理

// パラメーター初期化, 取得
	↓LC_Page_Admin_Products_Product.php actionメソッド
	$this->lfInitFormParam
	$this->lfGetFormParam_Complete
// エラーチェック
	$this->lfCheckError_Edit
// DBへデータ登録
	$this->lfRegistProduct
		// 次のシーケンス(次のID)を取得
		$objQuery->nextVal("dtb_products_product_id");
		// Insertの実行
		// カテゴリを更新
		$objDb->updateProductCategories($arrList['category_id'], $product_id);
		// 商品登録の時は規格を生成する。複製の場合は規格も複製されるのでこの処理は不要。
		// 規格登録
		// 規格なし商品(商品規格テーブルの更新)
		$this->lfInsertDummyProductClass($arrList);
		// 商品ステータス設定
		$objProduct = new SC_Product_Ex();
		$objProduct->setProductStatus($product_id, $arrList['product_status']);
// 件数カウントバッチ実行
	$objQuery =& SC_Query_Ex::getSingletonInstance();
	$objDb = new SC_Helper_DB_Ex();
	$objDb->sfCountCategory($objQuery);
	$objDb->sfCountMaker($objQuery);

ただ、これ以外にも
dtb_products_class_product_class_id_seq
dtb_products_product_id_seq
のauto_incrementが更新されていたり、
mtb_constantsが追加されたりと、よくわからないところもあるのでMySQLのクエリログを取ってチェックすることにしました。

MySQLのクエリログを保存する

相変わらず前置きが長いですね。ここからが本題です。

MySQLのクエリログを保存するには、
Windows(Xampp)の場合は「C:\xampp\mysql\bin\my.ini」
Linux(さくらVPS、CentOSでMySQLをyumインストール)の場合は、「/etc/my.cnf」
にログの保存先を追加します。

[mysqld]のセクションに追加します。

#Windowsの場合(パスをクォートする必要がある)
log="C:\xampp\mysql\data\query.log"
#CentOSの場合
log=/var/log/mysql/query.log

その後、MySQLを再起動すればOKです。

ちなみにWindowsの場合は、ログファイルのパスをクォート必要があるようです。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする