2009-11-23 8 views
5

ho buttato un DB dalla produzione:ERRORE 1005 (HY000) alla riga 244: Impossibile creare la tabella './intranet2/dept.frm' (errno: 150)

mysqldump -u nome_utente -p intranet2 > intranet2.sql

nel server di sviluppo:

mysql -u nome_utente -p intranet2 < intranet2.sql

e ottengo questo:

ERRORE 1005 (HY000) alla riga 244: Impossibile creare la tabella './intranet2/dept.frm' (errno: 150)

ho cercato di mettere questo all'inizio del file sql:

SET FOREIGN_KEY_CHECKS = 0;

ma continuo a ricevere lo stesso messaggio. mysqldump dovrebbe essere in grado di ricreare un database, altrimenti chi può fidarmi del mio backup?

+0

ho tolto due chiave esterna dalla tabella Dept e ha funzionato. Ma, se uso "SET FOREIGN_KEY_CHECKS = 0;" perché il b ---- y MySql stava applicando i vincoli foregn? La mia opinione è ancora il mysqldump è abbastanza inaffidabile. – rtacconi

+0

Ho messo la mia soluzione qui: http://riccardotacconi.blogspot.com/2009/11/error-1005-hy000-at-line-cant-create.html – rtacconi

risposta

3

Controlla se il motore è InnoDB.

In questo caso si potrebbe tentare di mettere queste linee all'inizio del dump

/*!40014 SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; 
/*!40014 SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; 
/*!40101 SET @[email protected]@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; 

e questi fine

/*!40101 SET [email protected]_SQL_MODE */; 
/*!40014 SET [email protected]_FOREIGN_KEY_CHECKS */; 
/*!40014 SET [email protected]_UNIQUE_CHECKS */; 

buona fortuna

+1

Mi sono imbattuto in questo errore con un mysqldump - tutto-database file che avevo modificato per aggiungere un singolo database dal dump e dove avevo eliminato il metainfo all'inizio del database. Quando l'ho ripristinato da un altro file di dump singolo, andava bene. –

+1

Sto ancora affrontando questo problema con queste righe. even/*! 40101 SET @OLD_SQL_MODE = @@ SQL_MODE, SQL_MODE = 'NO_AUTO_VALUE_ON_ZERO, TRADITIONAL, ALLOW_INVALID_DATES' * /; non aiuta – Faraz

+1

Devi includere tutte le linee, non solo l'ultima, ed eseguire lo script come una singola transazione. –