2016-01-27 10 views
5

Ich habe Probleme bei der Indizierung von Magento. All verfügbare Indizes Index in Ordnung, außer einem:Tag-Aggregation Datenindexprozess unbekannter Fehler

Tag Aggregationsdaten

Wenn die Indizierung durch die folgenden Fehler, aber ich kann nicht ganz sehen, was das Problem ist.

Tag Aggregation Data index process unknown error: 
exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'COUNT(tr.customer_id) + MIN(IF(tp.base_popularity IS NOT NULL, tp.base_popularity, 0))' in 'field list'' in /mywebsite-domain/httpd.www/lib/Zend/Db/Statement/Pdo.php:228 
Stack trace: 
#0 /mywebsite-domain/httpd.www/lib/Zend/Db/Statement/Pdo.php(228): PDOStatement->execute(Array) 
#1 /mywebsite-domain/httpd.www/lib/Varien/Db/Statement/Pdo/Mysql.php(110): Zend_Db_Statement_Pdo->_execute(Array) 
#2 /mywebsite-domain/httpd.www/app/code/core/Zend/Db/Statement.php(291): Varien_Db_Statement_Pdo_Mysql->_execute(Array) 
#3 /mywebsite-domain/httpd.www/lib/Zend/Db/Adapter/Abstract.php(480): Zend_Db_Statement->execute(Array) 
#4 /mywebsite-domain/httpd.www/lib/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('INSERT INTO `ma...', Array) 
#5 /mywebsite-domain/httpd.www/lib/Varien/Db/Adapter/Pdo/Mysql.php(504): Zend_Db_Adapter_Pdo_Abstract->query('INSERT INTO `ma...', Array) 
#6 /mywebsite-domain/httpd.www/app/code/core/Mage/Tag/Model/Resource/Indexer/Summary.php(233): Varien_Db_Adapter_Pdo_Mysql->query('INSERT INTO `ma...') 
#7 /mywebsite-domain/httpd.www/app/code/core/Mage/Tag/Model/Resource/Indexer/Summary.php(135): Mage_Tag_Model_Resource_Indexer_Summary->aggregate() 
#8 /mywebsite-domain/httpd.www/app/code/core/Mage/Index/Model/Indexer/Abstract.php(143): Mage_Tag_Model_Resource_Indexer_Summary->reindexAll() 
#9 /mywebsite-domain/httpd.www/app/code/core/Mage/Index/Model/Process.php(210): Mage_Index_Model_Indexer_Abstract->reindexAll() 
#10 /mywebsite-domain/httpd.www/app/code/core/Mage/Index/Model/Process.php(258): Mage_Index_Model_Process->reindexAll() 
#11 /mywebsite-domain/httpd.www/shell/indexer.php(168): Mage_Index_Model_Process->reindexEverything() 
#12 /mywebsite-domain/httpd.www/shell/indexer.php(216): Mage_Shell_Compiler->run() 
#13 {main} 

Next exception 'Zend_Db_Statement_Exception' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'COUNT(tr.customer_id) + MIN(IF(tp.base_popularity IS NOT NULL, tp.base_popularity, 0))' in 'field list', query was: INSERT INTO `magentotag_summary` (`tag_id`, `store_id`, `customers`, `products`, `popularity`, `uses`, `historical_uses`, `base_popularity`) SELECT `tr`.`tag_id`, `tr`.`store_id`, COUNT(DISTINCT tr.customer_id) AS `customers`, COUNT(DISTINCT tr.product_id) AS `products`, `COUNT(tr.customer_id) + MIN(IF(tp.base_popularity IS NOT NULL, tp`.`base_popularity, 0))` AS `popularity`, 0 AS `uses`, 0 AS `historical_uses`, 0 AS `base_popularity` FROM `magentotag_relation` AS `tr` 
INNER JOIN `magentocore_store` AS `cs` ON cs.store_id = tr.store_id 
INNER JOIN `magentocatalog_product_website` AS `pw` ON cs.website_id = pw.website_id AND tr.product_id = pw.product_id 
INNER JOIN `magentocatalog_product_entity` AS `e` ON tr.product_id = e.entity_id 
LEFT JOIN `magentotag_properties` AS `tp` ON tp.tag_id = tr.tag_id AND tp.store_id = tr.store_id 
INNER JOIN `magentocatalog_product_entity_int` AS `tad_status` ON tad_status.entity_id = e.entity_id AND tad_status.attribute_id = 273 AND tad_status.store_id = 0 
LEFT JOIN `magentocatalog_product_entity_int` AS `tas_status` ON tas_status.entity_id = e.entity_id AND tas_status.attribute_id = 273 AND tas_status.store_id = cs.store_id 
INNER JOIN `magentocatalog_product_entity_int` AS `tad_visibility` ON tad_visibility.entity_id = e.entity_id AND tad_visibility.attribute_id = 526 AND tad_visibility.store_id = 0 
LEFT JOIN `magentocatalog_product_entity_int` AS `tas_visibility` ON tas_visibility.entity_id = e.entity_id AND tas_visibility.attribute_id = 526 AND tas_visibility.store_id = cs.store_id 
INNER JOIN `magentocataloginventory_stock_status` AS `ciss` ON ciss.product_id = e.entity_id AND ciss.website_id = cs.website_id WHERE (tr.active = 1) AND (IF(IFNULL(tas_status.value_id, -1) > 0, tas_status.value, tad_status.value)=1) AND (IF(IFNULL(tas_visibility.value_id, -1) > 0, tas_visibility.value, tad_visibility.value)!=1) AND (ciss.stock_status = 1) GROUP BY `tr`.`tag_id`, 
     `tr`.`store_id` ON DUPLICATE KEY UPDATE `tag_id` = VALUES(`tag_id`), `store_id` = VALUES(`store_id`), `customers` = VALUES(`customers`), `products` = VALUES(`products`), `popularity` = VALUES(`popularity`), `uses` = VALUES(`uses`), `historical_uses` = VALUES(`historical_uses`), `base_popularity` = VALUES(`base_popularity`)' in /mywebsite-domain/httpd.www/lib/Zend/Db/Statement/Pdo.php:235 
Stack trace: 
#0 /mywebsite-domain/httpd.www/lib/Varien/Db/Statement/Pdo/Mysql.php(110): Zend_Db_Statement_Pdo->_execute(Array) 
#1 /mywebsite-domain/httpd.www/app/code/core/Zend/Db/Statement.php(291): Varien_Db_Statement_Pdo_Mysql->_execute(Array) 
#2 /mywebsite-domain/httpd.www/lib/Zend/Db/Adapter/Abstract.php(480): Zend_Db_Statement->execute(Array) 
#3 /mywebsite-domain/httpd.www/lib/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('INSERT INTO `ma...', Array) 
#4 /mywebsite-domain/httpd.www/lib/Varien/Db/Adapter/Pdo/Mysql.php(504): Zend_Db_Adapter_Pdo_Abstract->query('INSERT INTO `ma...', Array) 
#5 /mywebsite-domain/httpd.www/app/code/core/Mage/Tag/Model/Resource/Indexer/Summary.php(233): Varien_Db_Adapter_Pdo_Mysql->query('INSERT INTO `ma...') 
#6 /mywebsite-domain/httpd.www/app/code/core/Mage/Tag/Model/Resource/Indexer/Summary.php(135): Mage_Tag_Model_Resource_Indexer_Summary->aggregate() 
#7 /mywebsite-domain/httpd.www/app/code/core/Mage/Index/Model/Indexer/Abstract.php(143): Mage_Tag_Model_Resource_Indexer_Summary->reindexAll() 
#8 /mywebsite-domain/httpd.www/app/code/core/Mage/Index/Model/Process.php(210): Mage_Index_Model_Indexer_Abstract->reindexAll() 
#9 /mywebsite-domain/httpd.www/app/code/core/Mage/Index/Model/Process.php(258): Mage_Index_Model_Process->reindexAll() 
#10 /mywebsite-domain/httpd.www/shell/indexer.php(168): Mage_Index_Model_Process->reindexEverything() 
#11 /mywebsite-domain/httpd.www/shell/indexer.php(216): Mage_Shell_Compiler->run() 
#12 {main} 

Irgendwelche Hinweise?

Danke.

Antwort

0

Ich glaube nicht, dass es sich um einen Indexierungsfehler handelt. Wenn Sie sorgfältig den ausgewählten Teil der insert ... select ...-Anweisung überprüfen, dann können Sie sehen, dass der Ausdruck COUNT(tr.customer_id) + MIN(IF(tp.base_popularity IS NOT NULL, tp. base_popularity, 0)) ist von backticks (`) eingeschlossen, was bedeutet, dass mysql versucht, dies als Namen einer Spalte und nicht als Ausdruck zu interpretieren. Offensichtlich gibt es keine solche Spalte, daher die Fehlermeldung. Entfernen Sie die Backticks um diesen Ausdruck und die Fehlermeldung verschwindet.

0

Ich habe genau das gleiche Problem. @Shadow Es gibt keine Hintergund in Zusammenfassung.php

/** 
* Aggregate tags by specified ids 
* 
* @param null|int|array $tagIds 
* @return Mage_Tag_Model_Resource_Indexer_Summary 
*/ 
public function aggregate($tagIds = null) 
{ 
    $writeAdapter = $this->_getWriteAdapter(); 
    $this->beginTransaction(); 

    try { 
     if (!empty($tagIds)) { 
      $writeAdapter->delete(
       $this->getTable('tag/summary'), array('tag_id IN(?)' => $tagIds) 
      ); 
     } else { 
      $writeAdapter->delete($this->getTable('tag/summary')); 
     } 

     $select = $writeAdapter->select() 
      ->from(
       array('tr' => $this->getTable('tag/relation')), 
       array(
        'tr.tag_id', 
        'tr.store_id', 
        'customers'   => 'COUNT(DISTINCT tr.customer_id)', 
        'products'   => 'COUNT(DISTINCT tr.product_id)', 
        'popularity'  => 'COUNT(tr.customer_id) + MIN(' 
         . $writeAdapter->getCheckSql(
          'tp.base_popularity IS NOT NULL', 
          'tp.base_popularity', 
          '0' 
          ) 
         . ')', 
        'uses'    => new Zend_Db_Expr(0), // deprecated since 1.4.0.1 
        'historical_uses' => new Zend_Db_Expr(0), // deprecated since 1.4.0.1 
        'base_popularity' => new Zend_Db_Expr(0) // deprecated since 1.4.0.1 
       ) 
      ) 

Hoffe jemand hat eine Lösung für diese. Versucht fast alles.

+0

Ich bekomme genau den gleichen SQL-Fehler, in einem Magento 1.9.2.4. Hast du eine Lösung gefunden? – Anse

5

Die fehlerhaften Backticks werden eingefügt, weil Zend_Db_Select -> _ tableCols() COUNT(tr.customer_id) + MIN(IF(tp.base_popularity IS NOT NULL, tp.base_popularity, 0)) nicht als eine SQL-Funktion erkennt, die es dann an Zend_Db_Expr() weiterleiten sollte. Stattdessen wird es als [currentCorrelationName]. [Col] erkannt und dann als gewöhnliche Zeichenfolge behandelt.

Eine Lösung für dieses Problem ist es, die reguläre Ausdrücke Funktionen zum Erfassen von SQL zu lösen:

öffnen lib/Zend/Db/Select.php, finden Sie die folgende Zeile und die Zeichenfolge Endsymbol ($) entfernen:

const REGEX_COLUMN_EXPR = '/^([\w]*\(([^\(\)]|(?1))*\))$/'; 

.. ., so sieht es aus wie diese:

const REGEX_COLUMN_EXPR = '/^([\w]*\(([^\(\)]|(?1))*\))/'; 

Nun Zend_Db_Select->_tableCols() sollte den gesamten Ausdruck zu Zend_Db_Expr(), und das SQL-e übergeben Der Fehler sollte verschwinden.

0

Ich habe dies vor kurzem auf einer Website Kunden, ganz neu installieren, im Grunde eine Basis 1.9.3.2 installieren

hier ist das, was ich gefunden habe:

Die Website verwendet Komponisten (natürlich) einige installieren Basispakete.

Einer von ihnen ist dies:

colinmollenhour/magento-redis-session": "^2.0"

Das wiederum lädt Abhängigkeiten

- Installing magento/zendframework1 (1.12.16-patch3) Downloading: 100% Extracting archive REASON: colinmollenhour/php-redis-session-abstract v1.3.1 requires magento/zendframework1 ~1.12.0 -> satisfiable by magento/zendframework1[1.12.0, 1.12.1, 1.12.10, 1.12.13, 1.12.16, 1.12.16-patch1, 1.12.16-patch2, 1.12.16-patch3, 1.12.2, 1.12.3, 1.12.4, 1.12.5, 1.12.6, 1.12.7, 1.12.8, 1.12.9, 1.12.9-patch1]. Also, ein Update auf magento/zendframework1 in Anbieter installiert. Zu dieser Zeit war 'Magento/zendframework1: 1.12 installiert.16-patch3 '

Sobald ich die Redis-Session-Composer-Pakete entfernt habe, die das Zend-Update entfernt haben, sind die Dinge wieder normal. Die letzte Veröffentlichung vor zum Magento vermittlungs

Removals: colinmollenhour/magento-redis-session, colinmollenhour/php-redis-session-abstract, magento/zendframework1, colinmollenhour/credis - Removing colinmollenhour/magento-redis-session (2.0.2) - Removing colinmollenhour/php-redis-session-abstract (v1.3.1) - Removing magento/zendframework1 (1.12.16-patch3) - Removing colinmollenhour/credis (1.7)

Der Komponist Eintrag für Paketversion an dem Paket Versionen (https://github.com/colinmollenhour/Cm_RedisSession/releases) 2.0> Suche

v1.12 als markiert wurde installiert wurde installieren gesetzt 2 kompatible Version.

Sperren von Komponisten zu dieser Version: "colinmollenhour/magento-redis-session": "1.12"

lösen das Problem, und behält redis-Session-Update in magento Code-Basis.

Also, im Grunde ist das Problem, dass redis-session> 1.12 nicht m1 kompatibel ist.

+0

glückliche Tage: https://github.com/colinmollenhour/Cm_RedisSession/issues/105#issuecomment-284162608 – proxiblue