phpMyAdmin: ошибка MySQL 1062 — повторяющаяся запись

Я подключаюсь с пользователем «root» к моей базе данных «test», которую я размещаю локально для разработки. Среди прочих у меня есть таблица «рейтингкомментариев». По какой-то причине, когда я нажимаю на таблицу «ratingcomment», phpMyAdmin показывает мне следующую ошибку:

Fehler

    SQL-Befehl: 

    INSERT INTO  `phpmyadmin`.`pma_history` (

    `username` ,
     `db` ,
     `table` ,
     `timevalue` ,
     `sqlquery`
    )
    VALUES (
    'root',  'test',  'ratingcomment', NOW( ) ,  'SELECT * FROM `ratingcomment`'
    )
    MySQL meldet: 

    #1062 - Duplicate entry '838' for key 'PRIMARY'

Я использовал Google, чтобы узнать следующее

"This indicates that you have a UNIQUE or PRIMARY index on a table, and there is a duplicate value someone on one of the values in one of these indexes."

Но я все еще не совсем понимаю ошибку! Я использую первичный ключ, который автоматически увеличивается для всех моих таблиц, поэтому проблем с таблицей быть не должно. У меня была другая таблица под названием «рейтинг», в которой был столбец «комментарий». Может ли быть, что это вызывает проблемы?


person Pascal Klein    schedule 02.12.2010    source источник
comment
Что первично для таблицы? Запросите запись с первичным ключом 838 и посмотрите, сравните ли значения со значениями, которые вы пытаетесь INSERT.   -  person Jason McCreary    schedule 02.12.2010


Ответы (3)


Быстрая починка:

REPAIR TABLE `phpmyadmin`.`pma_history`

Если это не удастся, я просто обрезаю/очищаю таблицу.

TRUNCATE TABLE `phpmyadmin`.`pma_history`

Хотя у phpmyadmin есть место в моем наборе инструментов, я лично не использую его внутреннюю базу данных.

ДОПОЛНЕНИЕ

Таблицы MyISAM могут быть легко повреждены. Пара причин, которые обычно поражают меня: если MySQL не выключается должным образом, или если таблица имеет индекс FULLTEXT и файл стоп-слов на диске изменился.

Проще говоря, REPAIR просто проверяет файл данных на наличие ошибок (и, в зависимости от ваших опций, снова делает его пригодным для использования) и перезаписывает индексный файл. Справедливое предупреждение: с помощью MyISAM восстановление таблицы часто может привести к тому, что все ваши данные в этой таблице будут преобразованы в usable. Дополнительные сведения см. в doc.

Поиск в Google, относящийся к повреждению этой таблицы pma, привел меня к этому.

person Riedsio    schedule 02.12.2010
comment
Спасибо: Repair Table сработал! Но я не совсем понимаю, что произошло, зачем мне понадобилось ремонтировать стол и что на самом деле делает ремонтный стол! Я был бы признателен за небольшое описание и / или несколько ссылок, объясняющих проблему. - person Pascal Klein; 02.12.2010

Похоже, это внутренняя ошибка. Вы отправили этот запрос:

SELECT * FROM `ratingcomment`

phpMyAdmin пытается записать такое действие в свой внутренний журнал событий и терпит неудачу. Если вы погуглите pma_history, вы найдете несколько ссылок на поврежденную таблицу.

Мой совет: найдите другой клиент SQL (например, HeidiSQL) и попробуйте восстановить базу данных phpMyAdmin.

person Álvaro González    schedule 02.12.2010
comment
Я был бы признателен за некоторые отзывы о отрицательном голосовании, учитывая, что я в основном говорю то же, что и принятый ответ. - person Álvaro González; 04.12.2010
comment
Это правильно, потому что с моей стороны произошел сбой нашей базы данных MySQL или что-то в этом роде, так что могло случиться так, что таблицы были повреждены. - person Loreto Gabawa Jr.; 15.01.2013

Я знаю, что это немного поздно, но у меня была такая же проблема, и я хотел поделиться тем, что я сделал.

В PhpMyAdmin я перешел на вкладку «Операция» таблицы, просто увеличил значение AUTO_INCREMENT в разделе «Параметры таблицы» и вставил фиктивную запись.

person Loreto Gabawa Jr.    schedule 15.01.2013