2011-12-19 12 views
6

Attualmente il mio database utilizza il motore InnoDB. Ora voglio aggiungere la funzionalità di ricerca di testo completo, ed è per questo che voglio convertire le mie tabelle in MyISAM. Ma così facendo si rompono tutte le chiavi esterne. Come posso cambiare i miei motori da tavolo in MyISAM in modo sicuro?Qual è il modo più sicuro di convertire la tabella con InnoDB in MyISAM?

Come è possibile utilizzare SELECT ... JOIN dopo aver modificato le tabelle con il motore MyISAM?

ALTER TABLE jobs ENGINE = MyISAM; 
Cannot delete or update a parent row: a foreign key constraint fails 

risposta

6

vi consiglio di fare un dump del DB, cambiare tutto il testo da quel file da InnoDB a MyISAM, quindi caricare il file modificato

4

Per quanto ne so, MyISAM non supportato chiavi esterne (confrontare le funzionalità offerte da InnoDB rispetto alle funzionalità di MyISAM). MySQL prova a dirti che devi eliminare ogni vincolo di chiave esterna che fa riferimento alla tabella jobs prima di cambiare il suo motore in MyISAM.

+0

Ho avuto lo stesso messaggio di errore durante la conversione di una tabella e non appena ho eliminato tutti i vincoli di chiavi esterne, la conversione ha funzionato perfettamente. Quindi è esattamente come dice Kohanyi! (per favore pensa a cosa stai facendo prima di eliminarli ... nel mio caso i vincoli erano inutili, ma in alcuni casi potrebbero esserci per un motivo (per garantire l'integrità del DB se alcune applicazioni sono buggate?) ;-) – lucaferrario

Problemi correlati