質問 > その他 > CSVを使った商品データの一括登録について |
その他
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
soop |
投稿日時: 2010/5/5 20:15
対応状況: −−−
|
新米 登録日: 2010/5/5 居住地: 名古屋 投稿: 3 |
CSVを使った商品データの一括登録について 当方の環境は、EC-CUBEバージョン 2.4.3、PHPバージョン 5.2.13、DBバージョン MySQL 4.1.22です。
CSVで商品登録を行う場合、トランザクション処理の為、全レコード行が正常に処理された場合のみ、DBに登録される仕様と認識しております。 1行でも異常レコードが存在しエラーが発生した場合は、全ての行の登録がされない筈なのですが・・・ 実際には100件のレコードをアップロードした際、10行目でエラーが発生し、先頭行は項目名の為、2行目から8件分のレコードが登録され、問題行の以前のレコードが格納されてしまいます。 この為、エラーが発生した場合に、格納されてしまったレコードを削除して再アップロードを行う事を強いられています。 仕様通りに稼働させる為の確認事項やチェック事項などありましたら、どんなことでも構いません。詳細にご教示頂ければ幸いです。 |
seasoft |
投稿日時: 2010/5/5 20:58
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: CSVを使った商品データの一括登録について 最近、お客様からの依頼で、その辺りを検証したことがあるのですが、EC-CUBEコミュニティ(eccube-comu) と PostgreSQL の組み合わせでは、問題なくロールバックされました。
あくまで推測ですが、正式版固有の不具合か、MySQL との組み合わせによる不具合といった懸念がありそうです。
|
gemini |
投稿日時: 2010/5/5 22:02
対応状況: −−−
|
新米 登録日: 2009/3/17 居住地: 投稿: 7 |
Re: CSVを使った商品データの一括登録について 私は知りませんでしたがEC-CUBEはトランザクションが条件であるならばMySQLはストレージエンジンをInnoDBにする必要があります。
通常ではMyISAMタイプです。 |
seasoft |
投稿日時: 2010/5/5 22:24
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: CSVを使った商品データの一括登録について EC-CUBE では、商品回りは InnoDB だったかと。
|
soop |
投稿日時: 2010/5/6 9:08
対応状況: −−−
|
新米 登録日: 2010/5/5 居住地: 名古屋 投稿: 3 |
Re: CSVを使った商品データの一括登録について 早速のご返信ありがとうございます。
商品DBがInnoDBであることまでは確認したのですが・・・ ロジックもエラーがあればrollbackをコールしてて そこはちゃんと通過しているようなので・・・ どうもrollback関数そのものが稼働していないような 症状なんです。 データベースの権限とかそのあたりが関係する場合も あるのかと思い調査していますが、現在解決策を求めています。 引き続き、よろしくお願いします。 運用中のサイトのDBをmySQLからpostgreに変更する事が難しくなければ、そちらも視野に入れて検討する事とします。 |
seasoft |
投稿日時: 2010/5/6 9:22
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: CSVを使った商品データの一括登録について あくまで経験則による、可能性の一つという範囲ですが、MySQL ではシーケンス番号回りのロジックによって、トランザクションがコミットされるケースがあります。
そういった部分をチェックすると何か分かるかもしれません。 > 運用中のサイトのDBをmySQLからpostgreに変更する事が難しくなければ、そちらも視野に入れて検討する事とします。 基本的には慣れれば、さほど難しくは無いのですが、最初はテスト環境での練習などは、必要かと思います。また、DB のカスタマイズがあると、少々面倒な場合があります。
|
soop |
投稿日時: 2010/5/6 16:48
対応状況: 解決済
|
新米 登録日: 2010/5/5 居住地: 名古屋 投稿: 3 |
Re: CSVを使った商品データの一括登録について いろいろ試してみましたが結局、data/class/pages/admin/products/LC_Page_Admin_Products_UploadCSV.phpを以下のように修正し、明示的にautocommitの設定値を0にしてみたら、ロールバックが掛かるように成りました。
修正? 追加⇒ $objQuery->exec("SET AUTOCOMMIT=0"); $objQuery->begin(); 修正? $objQuery->commit(); 追加⇒ $objQuery->exec("SET AUTOCOMMIT=1"); 修正? $objQuery->rollback(); 追加⇒ $objQuery->exec("SET AUTOCOMMIT=1"); 察するに、「AUTOCOMMIT=1」の状態で該当PGMが稼働しているようです。bigin()内の解析は時間の関係上、回避します。 取り敢えず解決しましたので、ご報告いたします。 ご返信頂きました方々、誠にありがとうございました。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |