2010-07-27 2 views
1

, если я пишу удалить * из имя_таблицы в MySQL, все строки получить удалить там какой-нибудь способ, чтобы получить данные обратно в MySQL в этой таблицеудалять строки из таблицы в MySQL

+3

Вот что подпорки для. – NullUserException

+0

Что вы на самом деле хотите сделать? Зачем вам нужны данные? – Kangkan

ответ

2

Нет, нет.

И правильный запрос: DELETE FROM tablename. (без *)

+0

технически этот ответ неверен. Возможно, не может быть - см. Мой ответ. – akuzminsky

2

Восстановление из резервной копии.

0

Самый простой способ - восстановить последнюю резервную копию.

1

Зависит, зависит, зависит.

Предполагается, что у вас нет резервных копий. Если вы сделаете это, лучше восстановить таблицу из резервной копии, как было указано ранее.

Если стол был MyISAM, тогда ответ скорее НЕТ, чем ДА. Дело в том, что MyISAM хранит данные в блоках. Заголовок нормального блока - 3 или 4 байта. Заголовок удалённого блока составляет 20 байтов. Поэтому даже если вы извлекаете записи из MYD-файла, первый столбец (который является вашим ПК в большинстве случаев) будет перезаписан. Извлечение записей из MYD-файла практически невозможно.

Если InnoDB, вероятность намного выше. Если MySQL был остановлен/убит сразу после аварии, тогда вероятность будет слишком близка к 100%. InnoDB не удаляет сразу. Он помечает записи как удаленные и физически чистит записи, когда InnoDB восстанавливает индекс дерева B + (чтение - при вставке новых записей). Итак, у вас есть время. Первое, что вы делаете в таких случаях: немедленно прекратить MySQL, либо изящно, либо убить -9.

Я не знаю, могу ли я вставлять URL-адреса здесь. Инструмент для восстановления данных percona от Google, возьмите последнюю версию с внешней стороны и проверьте блог mysqlperformance (опять же, google it) для рецептов.

Удачи.

UPDATE: Восстановление данных инструментарий переехал в GitHub

Смежные вопросы