これらの値でソートするようにカタログを設定しました。これは昨夜、管理者を通じて保存しました。丸一日のほとんどの間、彼らはそこにいました。今、彼らは幽霊のように姿を消しました。
この問題は、インポートではなく、管理者が保存した値に関連している可能性があると思われます。
この問題の原因とコード内の解決策を教えてもらえますか?
フロントエンドで値が機能しているのを最後に見たとき (数時間前) から現在までに、いくつかのことを行いました。
1.) 2 つの新しい属性といくつかのテスト値 (問題の属性とは無関係) を追加し、インデックスを再作成しました。
2.) 60,000 個の製品に無関係な値をインポートしようとしました。インポートがハングしたので、
3.) 一度に 20,000 個の製品の値をインポートしました。エラーはありません。
4.) 再索引付け。
これで、手動で保存されたすべての値がなくなりました。繰り返しますが、これはどのように起こりますか?それらがDBに保存された場合、これを行うにはコードからDBへの削除呼び出しが必要ではありませんか? コードまたは管理者を介してそのようなコマンドを実行しなかった場合、どのように/なぜそのような呼び出しが行われるのでしょうか? これを修正して今後回避するにはどうすればよいですか?
アクセルへ (説明):
@Axel さん、返信ありがとうございます。
1.) 「sort_order 」というテキスト属性を作成し、 adminから整数値を入力しました。
2.) 次に、mysqldumpを使用して完全な db バックアップを行いました。
3.) 次に、「random_order」 (価格タイプ) と「random_order_1」 (テキストタイプ) の 2 つの新しい属性を作成しました。目的は、カタログ ページで製品をシャッフルするための 2 つのソリューションを試すことでした。
4.) phpMyAdmin を使用して、すべての製品をランダムな順序で表示する簡単なクエリを実行しました。
SELECT `sku`
FROM `catalog_product_entity`
WHERE 1
ORDER BY RAND( )
結果をcsvにエクスポートしました。Excel を使用してアイテムに 1 ~ 60,000 の番号を付け、列を持つインポート csv ファイルを作成しました: sku、random_order (価格タイプ)、random_order_1 (テキスト タイプ)、両方の属性が同じ整数値を持つ。
5.) 一度に 20,000 製品の管理で、標準のインポート方法 (既存の複雑なデータを置き換える) を使用しました。インポート後、以前に設定され、一見まったく無関係に見える「random_order」の値が削除されました。
インデックスを再作成する前に、すべてのアイテムのsort_orderがデフォルト (=1) にリセットされますが、フロントエンドでは適切な順序で表示されます (そのため、値は製品フラット テーブルにまだ存在します)。また、random_orderおよびrandom_order_1属性にはインポートされた値があります。
再インデックス後、 sort_orderのすべてのトレースが消去されます。実際にその属性をインポートしていれば意味がありますが、そうではありません。他の属性は影響を受けていないようです。
mysqldump からデータベースを復元し、プロセス全体を再試行しました。同じ結果です。