我正在为openart制作一个Atom feeder,它似乎在1.5.6x开发商店上工作得很好。但是,当我将其迁移到实时存储(和开发)_product
表date_modified
列总是返回getProduct()
结果数组,其中2015-01-15 10:45:18
或2014-12-01 12:52:23
为产品行....中的每个$result['date_modified']
以一种看似随机的方式。
Some things I tried:
- 检查
getProduct()
函数,以确保它提取正确的date_modified
。 - 检查确保
date_modified
实际上是DATETIME
列,而不是返回字符串。 - 我已经清理了DB的流氓/游牧行,并检查/修复了任何崩溃。
- 我已经尝试返回
date_modified
没有使用任何格式,如date(DATE_ATOM, $time)
- 我已经关闭了所有其他影响
getProducts()
功能的mod。库存和实际getProducts()
之间的代码没有差异。 - 我已经重建了OC外部的DB连接,并成功地将
date_modified
拉入模式,没有任何LEFT JOIN
表。 - 我已经在
manufacturer
表中找到了这些日期,但似乎没有任何损坏的数据,该列设置为DATETIME
和JOIN
s功能正常。 - 我已经把我的头发拔出来了2天,寻找一个列或这个查询如何像这样腐败而不触发任何错误。
编辑:在发布这篇文章后,我注意到现场商店在制造商表(和其他表)上有一个date_modified
。此外,OC存储了文字撇号,这些撇号会混淆一些查询以及这些实体的JSON。
制造商表上额外的date_modified
显然来自一个名为"OpenShop"的修改OC安装。我们没有意识到有一个在安装过程中执行的.sql
脚本。因此,使用JOIN
的查询提取的是制造商date_modified
,而不是产品。
解决方案是在getProduct()
和getProducts()
的SELECT
语句之后添加p.date_modified,
(或任何其他JOIN
查询,您想要显式地拉出正确的修改)。另一个解决方案是删除那些第三方date_modified
列,但它们有点方便。
另外,注意制造商、选项等名称中的撇号。我们最终暂时删除了它们,并将在以后编写更好的存储过程。