Ошибка в запросе БД: SELECT i.*, u.nickname as user_nickname, f.title as folder_title FROM cms_con_board i FORCE INDEX (date_pub) INNER JOIN cms_users as u FORCE INDEX (PRIMARY) ON u.id = i.user_id LEFT JOIN cms_content_folders as f ON f.id = i.folder_id WHERE (i.is_parent_hidden IS NULL) AND (i.is_approved = '1') AND (i.is_pub = '1') ORDER BY i.date_pub desc LIMIT 0, 15
Помогите разобраться в этой ошибке
Ошибка в запросе БД: SELECT i.*, u.nickname as user_nickname, f.title as folder_title FROM cms_con_board i FORCE INDEX (date_pub) INNER JOIN cms_users as u FORCE INDEX (PRIMARY) ON u.id = i.user_id LEFT JOIN cms_content_folders as f ON f.id = i.folder_id WHERE (i.is_parent_hidden IS NULL) AND (i.is_approved = '1') AND (i.is_pub = '1') ORDER BY i.date_pub desc LIMIT 0, 15
Нет столбца date_pub в таблице i (cms_con_board)
У себя воткнул в мускул, запрос работает
Нет столбца date_pub в таблице i (cms_con_board)
У себя воткнул в мускул, запрос работает
Самое интересное, что в таблице cms_con_board столбец date_pub ЕСТЬ.
А что это за таблица «i» в cms_con_board? У меня ее нет и не должно быть, вроде бы.
А что такое мускул и как вылечить эту проблему?
Мускул — это mysql на программерском сленге.
И этот самый мускул ругается не на отсутствие столбца date_pub, а на отсутствие индекса у этого столбца
Попробуйте вот так сделать:
ALTER TABLE `cms_con_board` ADD INDEX ( `date_pub` ) ;
= mySQLчто такое мускул
Именно поэтому на форуме не рекомендуются жаргонизмы.
Включил отладку и вылазит вот такое сообщение:
Код PHP: Ошибка в запросе БД: SELECT COUNT(i.id) as count FROM cms_con_board i INNER JOIN cms_con_board_cats_bind as b FORCE INDEX (item_id) ON b.item_id = i.id INNER JOIN cms_con_board_cats as c ON c.id = b.category_id WHERE (c.ns_left >= '60') AND (c.ns_right <= '71') AND (i.is_parent_hidden IS NULL) AND (i.is_approved = '1') AND (i.is_pub = '1')
ALTER TABLE `cms_con_board_cats_bind` ADD INDEX ( `item_id` ) ;
ALTER TABLE `cms_con_board_cats_bind` ADD INDEX ( `item_id` ) ;
Благодарю, получилось!
Подскажите, у меня после резервирования сайта и восстановление с Бэкапа выдало такую ошибку
Ошибка в запросе БД:
Ключ 'page_id' не существует в таблице 'i'
SELECT i.*, w.controller as `controller`, w.name as `name`, wb.*, i.id as `id`
FROM cms_widgets_bind_pages i
FORCE INDEX (page_id)
INNER JOIN cms_widgets_bind as wb ON wb.id = i.bind_id
INNER JOIN cms_widgets as w ON w.id = wb.widget_id
WHERE (i.template = 'default') AND (i.is_enabled = '1') AND (i.page_id IN ('0','1'))
ORDER BY i.page_id, i.position, i.ordering
LIMIT 1000
Последние вызовы:
cmsModel->get() @ /system/controllers/widgets/model.php: 537
modelWidgets->getWidgetsForPages() @ /system/core/core.php: 842
cmsCore->runWidgets() @ /index.php: 51
В Админ панель вхожу, но на сайт не попасть. Это БД ошибка?
Имя — page_id
Тип — INT
Длина/Значения — 11
По умолчанию — NULL
Атрибуты — UNSIGNED
Этот столбец отвечает на какой страници выводить виджет. Так как эта настройка у вас будет отсутствовать то виджиты будут на всех страницах.
Столбец в таблице присутствует, но для него отсутсвует индекс. Ошибочку вызывает строка запроса
FORCE INDEX (page_id)
Это не на ровном месте, а как следствие неверного экспорта или импорта таблиц БД. Далеко не факт, что данная ошибка будет единственной. Я бы не советовал вам доверять автоматическому созданию бэкапов. Лучше делать экспорт таблиц вручную. При экспорте установив галочкупосле резервирования сайта и восстановление с Бэкапа выдало такую ошибку
IF NOT EXISTS (менее эффективно, т.к. индексы будут созданы во время создания таблицы)
вы оградите себя от подобных ошибок в дальнейшем.
@VitaliyV, открываем таблицу widgets_bind_pages, переходим на вкладку "Структура", выделяем столбцы page_id, position, ordering и жмем кнопку "Индекс". Индекс создан, проблема решена.
Это не на ровном месте, а как следствие неверного экспорта или импорта таблиц БД. Далеко не факт, что данная ошибка будет единственной. Я бы не советовал вам доверять автоматическому созданию бэкапов. Лучше делать экспорт таблиц вручную. При экспорте установив галочкупосле резервирования сайта и восстановление с Бэкапа выдало такую ошибку
IF NOT EXISTS (менее эффективно, т.к. индексы будут созданы во время создания таблицы)
вы оградите себя от подобных ошибок в дальнейшем.
Оказалось всё проще! Я просто удалил равнозначные индексы и всё заработало!