2013-03-13 2 views
0

Я «унаследовал» существующую и действующую установку OpenCart 1.5.2.1.Категория OpenCart и вид продукта пустой в Frontend

Для пробных пугов я хотел настроить сайт-разработчик на моем локальном сервере. Поэтому я установил его локально и скопировал БД.

Я могу войти в бэкэнд без проблем - магазины настроены, все продукты и категории есть.

На внешнем интерфейсе я могу посетить домашнюю страницу магазина, и список категорий отображается правильно, включая количество товаров для каждой категории.

Однако, когда я пытаюсь просмотреть списки категорий или отдельный продукт, я получаю пустую страницу.

Я не получаю ошибку PHP - я приложил

display_errors = 1; 
error_reporting = E_ALL; 
log_errors = 1; 

к php.ini в корзину корневой папке.

Изнутри Ошибка OpenCart журнала, я получаю следующее сообщение об ошибке:

2013-03-13 18:51:15 - PHP Notice: Error: Column 'product_id' cannot be null<br />Error No: 1048<br />SELECT DISTINCT *, p [...] AND p2s.store_id = '5' in /path/to/root/system/database/mysql.php on line 49 

Любая идея, как решить эту проблему?

** UPDATE: **

Полный запрос:

SELECT DISTINCT *, pd.name, pd.creator, pd.keyword, pd.circa, pd.year, pd.century, pd.decade, pd.scenelocation, pd.fm_quicksearch AS fm_quicksearch, p.image, m.name AS manufacturer, (SELECT price FROM product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '8' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '8' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT points FROM product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = '8') AS reward, (SELECT ss.name FROM stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '1') AS stock_status, (SELECT wcd.unit FROM weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '1') AS weight_class, (SELECT lcd.unit FROM length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '1') AS length_class, (select (r.sum + p.rat)/(r.tot + p.tot) from (select COALESCE(j.sum,0) as sum , COALESCE(j.tot,0) as tot from (select SUM(rating) as sum , COUNT(rating) as tot, product_id from rating where product_id = '9206' group by product_id) j right join product on product.product_id = j.product_id where product.product_id = '9206') r, (select product_id, COALESCE(rating,0) as rat, count(rating) as tot from product where product_id = '9206' and rating > 0) p) AS rating, p.sort_order FROM product p LEFT JOIN product_description pd ON (p.product_id = pd.product_id) LEFT JOIN product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE p.product_id = '9206' AND pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '5' 

UPDATE

Я подозреваю, что это что-то делать с MySQL или конфигурации PHP. Потому что, когда я запускаю тот же запрос на реальном сайте, он работает безотказно.

UPDATE

Проблема связана с моей локальной MySQL установки. При использовании онлайн-базы данных все в порядке. Кто-то в OpenCart Форум - Link to Post показал следующее:

Эта ошибка возникает из вставки запроса на конкретный вклад, который автор имеет> untestedly пытался добавить пустое заявление, в котором полем автоинкрементным будет отклонять> особенно начиная с mySQL 5.1+. Эта методология от разработчиков mySQL была заблокирована уже несколько лет назад.

Обратитесь к автору, чтобы решить эту проблему, указав, что поле с автоматическим приращением НЕ требуется для запроса в запросе, поскольку оно уже создает добавочное значение> автоматически вместе с выполненным запросом.

Возможно, это происходит по этим линиям. Сам запрос не является вставкой, но он, скорее всего, будет с этим связан. Я посмотрю дальше.

ответ

-1

Да, ответ действительно имел отношение к моей локальной установке MySQL. Я переместил его на другой сервер, и он работал нормально. Спасибо за вход! Извините, у вас нет более конкретного ответа. Я просто хотел связать свободный пост с этим сообщением.

0

Установите «Уровень сжатия вывода» на 0 в меню «Система»> «Настройки»> «Сервер». Затем в файле php.ini display_errors = 1; error_reporting = E_ALL; log_errors = 1;

Таким образом, проблема связана с «product_id».На странице контроллера страницы проверьте идентификатор продукта (просто эхо его). затем проверьте запрос модели. проблема заключается только в идентификаторе продукта.

+0

Сообщается об ошибках в сообщениях об ошибках. В основном SQL-запрос, вызывающий ошибку, находится в функции getProduct ($ product_id) в каталоге/model/catalog/product.php. Мы правильно передаем продукт _id, но он выдает ошибку. Я обновил исходный вопрос, включив полный SQL-запрос. Что меня озадачивает, так это то, что живой сайт магазина работает отлично, но сайт-разработчик имеет эту ошибку. – AnuragBabaresco

Смежные вопросы