Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Magento:自写产品导入/更新后重建索引引发异常_Php_Mysql_Magento - Fatal编程技术网

Php Magento:自写产品导入/更新后重建索引引发异常

Php Magento:自写产品导入/更新后重建索引引发异常,php,mysql,magento,Php,Mysql,Magento,我们有一个模块将产品导入magento。该模块由Magento程序员编写。它使用MagentoAPI并用PHP编写。它读取一个类似CSV的文件(实际使用的分隔符是“#”),将一行翻译成产品,然后将产品写回Magento。到目前为止,一切顺利 我已经复制和更改了几次模块。最后一个变化是更新产品,而不是导入整个产品。该模块处理了其中大约950个产品,然后引发了一个异常: magento:/srv/www/vhosts/www.mysite.com/shell # php import_colors.

我们有一个模块将产品导入magento。该模块由Magento程序员编写。它使用MagentoAPI并用PHP编写。它读取一个类似CSV的文件(实际使用的分隔符是“#”),将一行翻译成产品,然后将产品写回Magento。到目前为止,一切顺利

我已经复制和更改了几次模块。最后一个变化是更新产品,而不是导入整个产品。该模块处理了其中大约950个产品,然后引发了一个异常:

magento:/srv/www/vhosts/www.mysite.com/shell # php import_colors.php ../var/import/colors.csv.out.csv
PHP Fatal error:  Uncaught exception 'Zend_Db_Statement_Exception' with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '12804-176-1-563' for key 'PRIMARY'' in /srv/www/vhosts/www.mysite.com/lib/Zend/Db/Statement/Pdo.php:234
Stack trace:
#0 /srv/www/vhosts/www.mysite.com/lib/Zend/Db/Statement.php(300): Zend_Db_Statement_Pdo->_execute(Array)
#1 /srv/www/vhosts/www.mysite.com/lib/Zend/Db/Adapter/Abstract.php(468): Zend_Db_Statement->execute(Array)
#2 /srv/www/vhosts/www.mysite.com/lib/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('INSERT INTO `ca...', Array)
#3 /srv/www/vhosts/www.mysite.com/lib/Varien/Db/Adapter/Pdo/Mysql.php(333): Zend_Db_Adapter_Pdo_Abstract->query('INSERT INTO `ca...', Array)
#4 /srv/www/vhosts/www.mysite.com/lib/Varien/Db/Adapter/Pdo/Mysql.php(1537): Varien_Db_Adapter_Pdo_Mysql->query('INSERT INTO `ca...', Array)
#5 /srv/www/vhosts/www.mysite.com/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Indexer/Eav in /srv/www/vhosts/www.mysite.com/lib/Zend/Db/Statement/Pdo.php on line 234

Fatal error: Uncaught exception 'Zend_Db_Statement_Exception' with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '12804-176-1-563' for key 'PRIMARY'' in /srv/www/vhosts/www.mysite.com/lib/Zend/Db/Statement/Pdo.php:234

Stack trace:
#0 /srv/www/vhosts/www.mysite.com/lib/Zend/Db/Statement.php(300): Zend_Db_Statement_Pdo->_execute(Array)
#1 /srv/www/vhosts/www.mysite.com/lib/Zend/Db/Adapter/Abstract.php(468): Zend_Db_Statement->execute(Array)
#2 /srv/www/vhosts/www.mysite.com/lib/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('INSERT INTO `ca...', Array)
#3 /srv/www/vhosts/www.mysite.com/lib/Varien/Db/Adapter/Pdo/Mysql.php(333): Zend_Db_Adapter_Pdo_Abstract->query('INSERT INTO `ca...', Array)
#4 /srv/www/vhosts/www.mysite.com/lib/Varien/Db/Adapter/Pdo/Mysql.php(1537): Varien_Db_Adapter_Pdo_Mysql->query('INSERT INTO `ca...', Array)
#5 /srv/www/vhosts/www.mysite.com/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Indexer/Eav in /srv/www/vhosts/www.mysite.com/lib/Zend/Db/Statement/Pdo.php on line 234
我一点也没想到。客户很高兴自己更换了最后50个左右的产品,错误信息被忘记了

然而,今天客户称他的产品属性索引不会建立,后台的索引仍然是橙色的“处理”。因此,我调查发现,可以使用shell/indexer.php构建索引。所以我试过了,瞧,我几乎忘记了同样的错误信息

我已经转储了数据库,并试图找出哪个表实际上包含了错误消息(12804-176-1-563)中列出的数据,但我没有运气。似乎这4个日期在这个顺序中找不到

现在,有两种选择可以继续。一种方法是找出哪个表实际包含问题,这样就可以使用Magento本身修复问题。另一种方法可能是清除相应的索引表并从头开始重建索引。我不确定在我不完全理解的数据库模式中四处挖掘是一个好主意


有人能帮我找出问题吗?

请检查这不是简单的问题,例如数据库中的一些重复产品被“中止”,从而使产品条目没有SKU值。

我对自编PHP导入脚本也有同样的问题。我仍然不知道如何解决这个问题,但我发现在12804-176-1-563中,12804指的是数据库中产品的id。因此,如果您删除/重新创建或禁用该产品,则索引器将正常工作。
如果您有任何关于为什么存在某些违反完整性约束的提示,请与我们分享!:-)

你能帮我吗?如何记录完整查询?通过MySQL,还是有办法使用Magento本身?这是一种解决方案。我不知道为什么会有重复的条目。我已经手动删除了这些条目,索引再次正确构建。