После смены движка с myisam на innodb блоки с индивидуальным наполнением товаров перестали отображаться

После смены движка с myisam на innodb (как рекомендует статья Яна Куакова да и поддержка) блоки с индивидуальным наполнением товаров перестали отображаться.
Вот такие

Разработчики нашли проблему.

В файле app/Tygh/BlockManager/Block.php есть метод getById, в которой есть код

        $block = db_get_row(
            "SELECT b.*, d.*, c.* FROM ?:bm_blocks as b "
            . "LEFT JOIN ?:bm_blocks_descriptions as d ON b.block_id = d.block_id "
            . "LEFT JOIN ?:bm_blocks_content as c ON b.block_id = c.block_id AND d.lang_code=c.lang_code "
            . "WHERE b.block_id = ?i AND d.lang_code=?s ?p ORDER BY snapping_id DESC LIMIT 1",
            $block_id,
            $lang_code,
            $this->getCompanyCondition('b.company_id') . $this->_generateContentCondition($dynamic_object)
        );

В действительности в БД существуют две записи, но LIMIT берет первую запись, и получается что на на разных типах движков выдаются разные строки.
На myisam возвращается строка с конкретным object_id и индивидуальным наполнением, а на innodb -с 0-м object_id без наполнения.


И вот предложенное решение.


Просьба внести правки в коробку и подарить мне продление лицензии на год, т.к. поиски проблемы как раз столько и стоили.

@Nail.Gafin

8 лайков

наивный :smile: в этом вся суть бэта тестирования cs-cart :stuck_out_tongue:

2 лайка

Причем тут бета тестирование? Этот файл годами не трогали вроде как…
Но с автором я согласен — дороговато конечно ему обошлось изучение проблемы и исправление кода но не мне судить.

Поддержку svg тоже не трогали годами, в один день просто убрали и все. И даже в документации не написали что вырезали поддержку, а мы дрю###ись сутками понять не могли в чем беда, оказывается забыли или посчитали что это не так важно и не стали писать в документацию.

да не причем, и проблем никаких не было …

не. я неугомонный ))

2 лайка