2010-02-22 9 views
6

Un database molto importante è andato danneggiato che era seduto sul server su un host web condiviso e non ho eseguito il backup. La tabella contiene un ampio elenco di indirizzi email molto importanti. Posso ottenere un elenco tavolo, ma se apro una qualsiasi delle tabelle con Navicat o phpMyAdmin, ottengo il seguente errore:Come recuperare un database MySQL: Informazioni errate nel file: './xxx.frm'

Informazioni non corrette nel file: './the-table-name.frm'

Sono stato in grado di ottenere una sospensione dei file .frm associati al database dall'host web.

Ci sono altri dati, ma se potessi almeno ottenere gli indirizzi e-mail, sarei a posto.

Come si recupera questo database? Sarei disposto a pagare qualcuno per risolvere questo problema.

risposta

14

Questo appartiene a serverfault.

In primo luogo, i file .FRM contengono nessuno dei "dati". Sono semplicemente la definizione del tavolo.

Se tutte delle seguenti condizioni:

  • La tabella sta usando il motore di memorizzazione MyISAM
  • Sai la dichiarazione CREATE TABLE necessario per ricreare la tabella

Poi , effettuare le seguenti operazioni:

  1. arresto MySQL
  2. Backup vostro table_name.frm, table_name.MYI, file table_name.MYD
  3. eliminarli dalla directory dei dati mysql (/ var/lib/mysql di solito)
  4. Avviare MySQL
  5. creare le tabella di nuovo
  6. Stop MySQL
  7. Copia i file .MYD e .MYI nel datadir, sostituendo quelli lì.
  8. Inizio MySQL
  9. ???
  10. Profit
+0

Grazie ... ma vuol dire che se sono su InnoDB, sono fregato? – Wolverine

+0

Bene, InnoDB è "crash-safe" e molto più resiliente di MyISAM. Un file .frm non può essere danneggiato attraverso il normale utilizzo di mysql. Senza sapere cosa hai fatto non posso aiutarti. Indipendentemente da ciò, è oltre lo scopo di SO, in quanto non è correlato alla programmazione. – hobodave

+0

non funziona per me, tavolo ancora corrotto – nick

0

ho avuto un problema simile, si scopre il motore InnoDB MySQL è stato spento (ero in grado di controllare tramite phpMyAdmin, un bash pro potrebbe dirvi come fare altri modi). nel mio caso, è stato un semplice riavvio di MySQL, ma si potrebbe voler controllare la configurazione se qualcosa è cambiato lì.

0

Puoi provare i seguenti comandi: CHECK TABLE nometabella

Se questo dà "corrotto" messaggio prova:

REPAIR TABLE nometabella

In realtà questi sono non ha risolto il mio problema simile, ma possono essere utili per qualcuno.

Problemi correlati