Я установил zpanel на моем компьютере с Windows 7 для запуска php и MySQL. До сегодняшнего дня (18 августа 2016 года) и php, и MySQL работали хорошо, но сегодня я обнаружил, что одна из моих таблиц MySQL недоступна из php и phpmyadmin, а позже обнаружил, что она не работает. Когда я прошел через phpmyadmin, я обнаружил, что он указан как "используемый" в описании таблицы MySQL для этой конкретной базы данных. Затем я попробовал REPAIR TABLE (tablename) из SQL-запроса в базе данных phpmyadmin. Таблица успешно восстановлена, но все мои данные (строки таблицы) были удалены или пустые (я не уверен, количество строк равно нулю). Там были тысячи строк данных. Но пока я вставляю новые данные в эту восстановленную таблицу, она использует следующий идентификатор (автоинкремент) ранее разбитой таблицы.

Мой вопрос: есть ли способ вернуть мои строки этой разбитой таблицы после ремонта?

[В автоматически сгенерированном резервном копировании я обнаружил, что в разбившейся таблице нет строк еще месяц назад (резервное копирование данных сохраняется на каждый день в течение двух месяцев), хотя таблица сегодня вылетала. Но у всех других таблиц (есть три таблицы) той же базы данных есть целые строки.]

1 ответ1

0

Согласно официальной документации MySQL:

предосторожность

Сделайте резервную копию таблицы перед выполнением операции восстановления таблицы; при некоторых обстоятельствах операция может привести к потере данных. Возможные причины включают, но не ограничиваются ошибками файловой системы. См. Главу 8 «Резервное копирование и восстановление».

Вы говорите, что эта таблица перестала иметь данные месяц назад, поэтому, если эта таблица не находится в другой файловой системе, я бы отказался от этой причины (поскольку это может повлиять и на другие ваши таблицы). Это также говорит о том, что ошибки файловой системы - не единственные причины.

Мне кажется, что REPAIR TABLE не причинил никакого вреда вашей таблице, но какое-то событие около 1 месяца назад нанесло вред, и вы перестали иметь данные в этой таблице. Без дополнительной информации сложно дать советы, но они могут включать в себя:

  • Изменения кода, связанные с некорректными инструкциями DELETE FROM удаляющими все строки.
  • Сценарии обслуживания, которые работают неправильно и удаляют правильные строки.
  • Атаки SQL-инъекции, позволяющие удаленному злоумышленнику удалить содержимое этой таблицы.
  • ...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .