baltun
Администратор
- Сообщения
- 11.702
- Реакции
- 2.814
- Баллы
- 1.833
Итак столкнулись с форумом который медленно работает и выкидывает такие ошибки MySQL statement prepare error [1176]: Key 'username' doesn't exist в результате выполнив запрос ниже узнали что у нас нет индексов и ключей у нескольких десятков таблиц:
А к слову без индекса должно быть всего 2 таблицы xf_oauth_client, xf_oauth_request у остальных стандартных таблиц форума должны быть индексы и ключи.
Перебираем таблицы из списка полученный запросом выше в этих запросах:
После того как перебрали к примеру таблицу xf_widget_position заходим в phpmyadmin подключаемся к оригинальной базе XF (она тоже должна быть развернута для сравнения) и выгружаем данные таблице и там же будет код для создания индексов и ключей.
Может быть таблица где нужно единично удалить дубли тогда можно выполнить такой код:
Запрос нужно изменить под выбранные таблицы.
Запрос показывает таблицы у которых нет AUTO_INCREMENT:
Как вариант посмотреть индексы и ключи любой таблице можно так:
Ну и собственно конечно же дублей в базе не должно быть это одна из причин, что база развернута с ошибками.
SQL:
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'xsacha10'
AND table_type = 'BASE TABLE'
AND table_name NOT IN (
SELECT DISTINCT table_name
FROM information_schema.statistics
WHERE table_schema = 'xsacha10'
);
Перебираем таблицы из списка полученный запросом выше в этих запросах:
SQL:
CREATE TABLE table_dumpes AS SELECT DISTINCT * FROM xf_widget_position;
DROP TABLE xf_widget_position;
RENAME TABLE table_dumpes TO xf_widget_position;
Может быть таблица где нужно единично удалить дубли тогда можно выполнить такой код:
SQL:
DELETE FROM xf_widget_position
WHERE widget_id = 7
LIMIT 1;
Запрос показывает таблицы у которых нет AUTO_INCREMENT:
SQL:
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'xsacha10'
AND table_name NOT IN (
SELECT table_name
FROM information_schema.columns
WHERE table_schema = 'xsacha10'
AND extra LIKE '%auto_increment%'
);
Как вариант посмотреть индексы и ключи любой таблице можно так:
SQL:
SHOW CREATE TABLE xf_widget_position;
Ну и собственно конечно же дублей в базе не должно быть это одна из причин, что база развернута с ошибками.
Последнее редактирование: