我已经设置了目录来对这些值进行排序,这是我昨晚通过管理员保存的。一整天的大部分时间里,他们都在那里。现在,他们像幽灵一样消失了。
我怀疑这个问题可能与通过管理员保存的值有关,而不是与导入的值有关。
谁能指出这个问题的根源和代码中的解决方案?
从我上次看到前端的值(几个小时前)到现在,我做了几件事:
1.) 添加了 2 个新属性和一些测试值(与问题属性无关),重新索引。
2.) 尝试为 60,000 个产品导入不相关的值。进口挂了,所以
3.) 一次导入 20,000 个产品的值,没有错误。
4.) 重新索引。
现在手动保存的所有值都消失了。再次,这怎么可能发生?如果它们被保存到数据库中,那么不应该从代码中对数据库进行删除调用来执行此操作吗?当我没有在代码中或通过管理员执行任何此类命令时,如何/为什么会进行这样的调用?我该如何解决这个问题并在将来避免?
致阿克塞尔(澄清):
感谢您的回复,@Axel。
1.) 我创建了一个名为“ sort_order ”的文本属性,并通过admin输入了一些整数值。
2.) 然后我用 mysqldump做了一个完整的数据库备份。
3.) 然后,我创建了两个新属性,“ random_order ”(价格类型)和“ random_order_1 ”(文本类型)。目的是尝试使用两种解决方案来洗牌目录页面中的产品。
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.)我在管理员中使用标准导入方法(替换现有的复杂数据),一次 20k 产品。导入后,先前设置且看似完全不相关的“ random_order ”的值已被删除。
在重新索引之前,每个项目的sort_order现在重置为默认值 (=1),但它仍然以正确的顺序出现在前端(因此值仍然存在于产品平面表中),而random_order和random_order_1属性具有它们的导入值。
重新索引后, sort_order的所有痕迹都将被清除。如果我实际上是在导入该属性,那将是有道理的,但我不是。似乎没有其他属性受到影响。
我从 mysqldump 恢复了 db,再次尝试了整个过程。结果相同。