sql >> Database >  >> RDS >> Mysql

wat is er mis met deze Magento-query?

Nadat ik net een upgrade naar 1.9.2.2 voor de website van een vriend had uitgevoerd en dit probleem tegenkwam, heb ik de volgende patch in het bestand geplaatst,

[magento/app/code/core/Mage/CatalogRule/Model/Action/Index/Refresh.php]

Ik kan niet zeggen welke onflow-effecten er kunnen zijn en toekomstige updates zullen moeten oppassen deze functie niet te missen als dit bestand natuurlijk wordt overschreven, maar voeg om te beginnen de regel toe:

'rules_hash'            => new Zend_Db_Expr('NULL'),

om de select-instructie er als volgt uit te laten zien:

$select = $this->_connection->select()
        ->from($indexSelect, array())
        ->joinInner(
            array(
                'dates' => $this->_connection->select()->union(
                    array(
                        new Zend_Db_Expr(
                            'SELECT ' . $this->_connection->getDateAddSql(
                                $this->_connection->fromUnixtime($time),
                                -1,
                                Varien_Db_Adapter_Interface::INTERVAL_DAY
                            ) . ' AS rule_date'
                        ),
                        new Zend_Db_Expr('SELECT ' . $this->_connection->fromUnixtime($time) . ' AS rule_date'),
                        new Zend_Db_Expr(
                            'SELECT ' . $this->_connection->getDateAddSql(
                                $this->_connection->fromUnixtime($time),
                                1,
                                Varien_Db_Adapter_Interface::INTERVAL_DAY
                            ) . ' AS rule_date'
                        ),
                    )
                )
            ),
            '1=1',
            array()
        )
        ->columns(
            array(
                'rule_product_price_id' => new Zend_Db_Expr('NULL'),
                'rule_date'             => 'dates.rule_date',
                'customer_group_id'     => 'customer_group_id',
                'product_id'            => 'product_id',
                'rule_price'            => 'MIN(rule_price)',
                'website_id'            => new Zend_Db_Expr($website->getId()),
                'latest_start_date'     => 'latest_start_date',
                'earliest_end_date'     => 'earliest_end_date',
                /**
                Added because rules_hash was created by some module and not handled properly,
                see http://stackoverflow.com/questions/19480415/whats-wrong-with-this-magento-query
                */
                'rules_hash'            => new Zend_Db_Expr('NULL'),
            )
        )
        ->where(new Zend_Db_Expr($this->_connection->getUnixTimestamp('dates.rule_date') . " >= from_time"))
        ->where(
            $this->_connection->getCheckSql(
                new Zend_Db_Expr('to_time = 0'),
                new Zend_Db_Expr(1),
                new Zend_Db_Expr($this->_connection->getUnixTimestamp('dates.rule_date') . " <= to_time")
            )
        )
        ->group(array('customer_group_id', 'product_id', 'dates.rule_date'));

    return $select;


  1. CSV-gegevens importeren met PHP/MySQL

  2. Ontsnappen aan het escape-teken werkt niet – SQL LIKE-operator

  3. Creëer invoegtrigger om int-veld van samengestelde PK (String, int) automatisch te verhogen, herstart nummering op 1 voor nieuwe Strings

  4. Dynamisch DAG creëren op basis van rij beschikbaar op DB Connection