Ошибка в запросе БД

#1 11 июля 2016 в 20:31
Помогите разобраться в этой ошибке

  1. Ошибка в запросе БД:
  2. Key 'date_pub' doesn't exist in table 'i'
  3.  
  4. SELECT i.*, u.nickname as user_nickname, f.title as folder_title
  5. FROM cms_con_board i
  6. FORCE INDEX (date_pub)
  7. INNER JOIN cms_users as u FORCE INDEX (PRIMARY) ON u.id = i.user_id
  8. LEFT JOIN cms_content_folders as f ON f.id = i.folder_id
  9. WHERE (i.is_parent_hidden IS NULL) AND (i.is_approved = '1') AND (i.is_pub = '1')
  10. ORDER BY i.date_pub desc
  11. LIMIT 0, 15
#2 11 июля 2016 в 20:34


Помогите разобраться в этой ошибке

  1. Ошибка в запросе БД:
  2. Key 'date_pub' doesn't exist in table 'i'
  3.  
  4. SELECT i.*, u.nickname as user_nickname, f.title as folder_title
  5. FROM cms_con_board i
  6. FORCE INDEX (date_pub)
  7. INNER JOIN cms_users as u FORCE INDEX (PRIMARY) ON u.id = i.user_id
  8. LEFT JOIN cms_content_folders as f ON f.id = i.folder_id
  9. WHERE (i.is_parent_hidden IS NULL) AND (i.is_approved = '1') AND (i.is_pub = '1')
  10. ORDER BY i.date_pub desc
  11. LIMIT 0, 15

Man

Нет столбца date_pub в таблице i (cms_con_board)

У себя воткнул в мускул, запрос работает
#3 11 июля 2016 в 20:49



Нет столбца date_pub в таблице i (cms_con_board)

У себя воткнул в мускул, запрос работает

QBASIC

Самое интересное, что в таблице cms_con_board столбец date_pub ЕСТЬ.

А что это за таблица «i» в cms_con_board? У меня ее нет и не должно быть, вроде бы.

А что такое мускул и как вылечить эту проблему?

#4 11 июля 2016 в 21:04
Man,

Мускул — это mysql на программерском сленге.
И этот самый мускул ругается не на отсутствие столбца date_pub, а на отсутствие индекса у этого столбца

Попробуйте вот так сделать:

  1. ALTER TABLE `cms_con_board` ADD INDEX ( `date_pub` ) ;
.
#5 11 июля 2016 в 21:04

что такое мускул

Man
= mySQL
Именно поэтому на форуме не рекомендуются жаргонизмы.
#6 11 июля 2016 в 21:54
Всем спасибо
#7 13 июля 2016 в 17:56
Как с этим бороться?
Включил отладку и вылазит вот такое сообщение:

  1. Код PHP:
  2. Ошибка в запросе БД:
  3. Key 'item_id' doesn't exist in table 'b'
  4.  
  5. SELECT COUNT(i.id) as count
  6. FROM cms_con_board i
  7. INNER JOIN cms_con_board_cats_bind as b FORCE INDEX (item_id) ON b.item_id = i.id
  8. INNER JOIN cms_con_board_cats as c ON c.id = b.category_id
  9. 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')
  10.  
#8 13 июля 2016 в 18:23
  1. ALTER TABLE `cms_con_board_cats_bind` ADD INDEX ( `item_id` ) ;
#9 13 июля 2016 в 18:29


  1. ALTER TABLE `cms_con_board_cats_bind` ADD INDEX ( `item_id` ) ;

Loadырь

Благодарю, получилось!
#10 6 октября 2020 в 19:14
Никто не знает как исправить ошибку из ничего появившуюся...

Подскажите, у меня после резервирования сайта и восстановление с Бэкапа выдало такую ошибку

Ошибка в запросе БД:
Ключ '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

В Админ панель вхожу, но на сайт не попасть. Это БД ошибка?
#11 6 октября 2020 в 19:32
Создать столбец "page_id" в "cms_widgets_bind_pages"
Имя — page_id
Тип — INT
Длина/Значения — 11
По умолчанию — NULL
Атрибуты — UNSIGNED

Этот столбец отвечает на какой страници выводить виджет. Так как эта настройка у вас будет отсутствовать то виджиты будут на всех страницах.
#12 6 октября 2020 в 19:49
Tolya, немного не так))
Столбец в таблице присутствует, но для него отсутсвует индекс. Ошибочку вызывает строка запроса
  1. FORCE INDEX (page_id)
которая говорит что для более быстрого поиска необходимо использовать индекс page_id. Сам индекс должен выглядеть так:

Иллюстрация
#13 6 октября 2020 в 19:55
@VitaliyV, открываем таблицу widgets_bind_pages, переходим на вкладку "Структура", выделяем столбцы page_id, position, ordering и жмем кнопку "Индекс". Индекс создан, проблема решена.
Иллюстрация

после резервирования сайта и восстановление с Бэкапа выдало такую ошибку

Это не на ровном месте, а как следствие неверного экспорта или импорта таблиц БД. Далеко не факт, что данная ошибка будет единственной. Я бы не советовал вам доверять автоматическому созданию бэкапов. Лучше делать экспорт таблиц вручную. При экспорте установив галочку
IF NOT EXISTS (менее эффективно, т.к. индексы будут созданы во время создания таблицы)
вы оградите себя от подобных ошибок в дальнейшем.
#14 8 октября 2020 в 15:05


@VitaliyV, открываем таблицу widgets_bind_pages, переходим на вкладку "Структура", выделяем столбцы page_id, position, ordering и жмем кнопку "Индекс". Индекс создан, проблема решена.
Иллюстрация

после резервирования сайта и восстановление с Бэкапа выдало такую ошибку

Это не на ровном месте, а как следствие неверного экспорта или импорта таблиц БД. Далеко не факт, что данная ошибка будет единственной. Я бы не советовал вам доверять автоматическому созданию бэкапов. Лучше делать экспорт таблиц вручную. При экспорте установив галочку
IF NOT EXISTS (менее эффективно, т.к. индексы будут созданы во время создания таблицы)
вы оградите себя от подобных ошибок в дальнейшем.

dwd

Оказалось всё проще! Я просто удалил равнозначные индексы и всё заработало!

#15 11 октября 2020 в 10:10
Удалить проверка индексы не правильный подход нужно исправить все индексы они сильно влияет в производстве
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.