baltun
Администратор
- Сообщения
- 11.702
- Реакции
- 2.814
- Баллы
- 1.833
Один из наших пользователей обратился к нам с такой ошибкой (в заголовке) как оказалась причина такой ошибки отсутствие у таблице индексов и ключей. Наш алгоритм действий.
Смотрим есть у нас индексы или нет:
В нашем случае их нет список пуст пытаемся повесить индексы но у нас не получается т.к. у нас в таблице есть еще и дубли записей:
Пытаемся избавиться от дублей:
Что мы сделали, мы создали таблицу и перенесли туда записи без дублей, потом удалили оригинальную таблицу и переименовали нашу новую таблицу в старую как и должно быть.
Далее мы повесили индексы:
После всех действий ошибка пропала при нажатии на вкладку пользователи в панели управления.
Смотрим есть у нас индексы или нет:
SQL:
SHOW INDEX FROM xf_user;
В нашем случае их нет список пуст пытаемся повесить индексы но у нас не получается т.к. у нас в таблице есть еще и дубли записей:
SQL:
SELECT username, COUNT(*)
FROM xf_user
GROUP BY username
HAVING COUNT(*) > 1;
Пытаемся избавиться от дублей:
SQL:
CREATE TABLE table_dumpes AS SELECT DISTINCT * FROM xf_user;
DROP TABLE xf_user;
RENAME TABLE table_dumpes TO xf_user;
Далее мы повесили индексы:
SQL:
ALTER TABLE `xf_user`
ADD PRIMARY KEY (`user_id`),
ADD UNIQUE KEY `username` (`username`),
ADD KEY `email` (`email`),
ADD KEY `permission_combination_id` (`permission_combination_id`),
ADD KEY `user_state` (`user_state`),
ADD KEY `last_activity` (`last_activity`),
ADD KEY `last_summary_email_date` (`last_summary_email_date`),
ADD KEY `message_count` (`message_count`),
ADD KEY `trophy_points` (`trophy_points`),
ADD KEY `reaction_score` (`reaction_score`),
ADD KEY `register_date` (`register_date`),
ADD KEY `question_solution_count` (`question_solution_count`),
ADD KEY `vote_score` (`vote_score`),
ADD KEY `staff_username` (`is_staff`,`username`),
ADD KEY `resource_count` (`xfrm_resource_count`);