sql >> Databasteknik >  >> RDS >> Mysql

vad är det för fel på denna Magento-fråga?

Efter att precis ha uppgraderat till 1.9.2.2 för en väns webbplats och stött på det här problemet, satte jag följande patch på plats i filen,

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

Jag kan inte säga vilka onflow-effekter det kan bli och framtida uppdateringar måste vara försiktiga så att den inte missar den här funktionen om den här filen skrivs över så klart, men för att komma igång lägg till raden:

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

för att få select-satsen att se ut så här:

$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. Hur gör man en sökfråga på ett kolumnvärde som innehåller en sträng med kommaseparerade värden?

  2. Hur lagrar jag en BIGINT i MySQL med PDO?

  3. Snabba upp ett stort antal mysql-uppdateringar och -inlägg

  4. Anpassad ORDER BY för att ignorera "the"