Magento1.6の管理画面で商品を修正すると、SQLエラーが出る

1.4.2 で開発していた Magento を 1.6 に移行する作業を年末年始で行っていたのですが、だいたい完了したかなーと思った時に、困ったエラーに遭遇してしまいました。

カタログー商品管理で、商品を編集すると、編集は完了するのですが下記の警告が表示されます。

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry ‘n-0-1’ for key 1
(n は、データベース上の商品ID)

意味としては、データベース上にエントリが重複しているということです。
放っておくと大変なことになりかねません。
移行作業で商品データをCSVでインポートしたり、データベース上でSQLで商品データを削除したりしているので、「何かやっちゃったかなー」と、かなり焦りました。

でも、どうやら私のせいではなかったようです。
警告メッセージの内容でググったら、こんな記事を見つけました。

Issues with Special Price and SQL error on product save (+ editing in cart?)
https://github.com/organicinternet/magento-configurable-simple/issues/52 

URLを見てピンとくる方もいらっしゃるかもしれませんが、この記事はエクステンション「Simple Configurable Products」に関するものです。
このエクステンションは、Configurable Products の価格を割合ではなく価格で設定できるという、地味に便利なものです。
1.5 に対応していると明記してあるので、1.6 でも使えると思っていれていたのですが、どうやらダメだったようです。

対策としては、プログラムを1行書き換えるだけです。

(対象ファイル)
app/code/community/
  OrganicInternet/SimpleConfigurableProducts/
    Catalog/Model/Resource/Eav/Mysql4/Product/Indexer/Price.php の58行目

(旧)

$this->cloneIndexTable(true);

(新)

$this->clearTemporaryIndexTable();

いやー、新年早々、ビビリました。
何が起こったかと思って、データベースの内容をしらみつぶしに見ちゃいましたからねー。

でも、1.6 は、1.4にはない便利なエクステンションが多くて結構いいですよ。
良いところについては、また後ほど記事を書きたいと想います。

この記事を書いた人

川井 昌彦
川井 昌彦
FAシステムメーカー、国内最大手印刷会社製版部、印刷・ウェブ制作会社を経て、家庭の事情で実家に帰省して独立
現在はフリーランスと制作会社シニアディレクターのマルチワーク
ウェブ制作のほぼ全般を見渡せるディレクター業務が主だが、デザイン・コーディングも好き

1997年ブログ開設
WordPressコミュニティには2011年から参加
WordCamp Kansai 2016 セッションスピーカー
WordCamp Tokyo 2023 パネルディスカッションパネラー
WordBench京都、WordBench神戸、WordPress Meetup八王子など登壇多数

ご質問・ご相談などありましたら
お気軽にお問い合わせください


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Vektor Passport(ライセンス期間1年)
VK Filter Search Pro
Vektor WordPress Solutions
PAGE TOP