In breve: MySQL Error 1005 Cannot create table indica che MySQL non riesce a creare la tabella; il dettaglio errno e il log InnoDB identificano il vincolo o il problema sottostante.
Indice dei contenuti
MySQL Error 1005 Cannot create table: significato
Le prime ipotesi da verificare per “MySQL Error 1005 Cannot create table” sono colonne di una chiave esterna con tipo, lunghezza o attributi differenti; indice o tabella padre mancante.

Sintomi e cause probabili
Sintomi da verificare
- CREATE TABLE o ALTER TABLE termina con Error 1005
- Il messaggio riporta un errno o un riferimento a un vincolo esterno
- Una migrazione o l’importazione del database si interrompe
- La tabella nuova non compare nello schema
Cause probabili
- Colonne di una chiave esterna con tipo, lunghezza o attributi differenti
- Indice o tabella padre mancante
- Nome di vincolo già utilizzato nello stesso schema
- Engine, charset, spazio disco o permessi non compatibili con la creazione
Diagnosi passo per passo
- Copiare il messaggio completo con errno e query
- Consultare SHOW ENGINE INNODB STATUS subito dopo l’errore
- Confrontare SHOW CREATE TABLE della tabella padre e di quella figlia
- Verificare tipo, unsigned, collation e indice delle colonne collegate
- Controllare spazio e log del server se l’errore non riguarda un vincolo
Log e dati da controllare
- Messaggio completo con errno
- SHOW ENGINE INNODB STATUS
- SHOW CREATE TABLE delle tabelle coinvolte
- Error log MySQL o MariaDB
Correzioni sicure
- Allineare esattamente le colonne della chiave esterna
- Creare l’indice o la tabella padre prima della tabella figlia
- Assegnare un nome univoco al vincolo
- Uniformare engine e charset quando richiesto
- Ripetere la migrazione da backup dopo aver corretto lo schema

Verifica finale
- La tabella viene creata
- Le chiavi esterne risultano presenti
- La migrazione prosegue senza Error 1005
- Inserimento e rollback di prova rispettano i vincoli
Errori da evitare
- Disattivare permanentemente i controlli delle chiavi esterne
- Eliminare la tabella padre senza backup
- Correggere soltanto il nome ignorando l’errno
- Ripetere l’importazione senza rimuovere lo stato parziale
Guide Xlogic correlate
- MySQL Error 1008: cannot drop database
- MySQL Error 1022: cannot write duplicate key in table
- MySQL Error 1051: unknown table
Fonti tecniche
Domande frequenti
Che cosa significa “MySQL Error 1005 Cannot create table”?
MySQL Error 1005 Cannot create table indica che MySQL non riesce a creare la tabella; il dettaglio errno e il log InnoDB identificano il vincolo o il problema sottostante.
Da cosa può dipendere “MySQL Error 1005 Cannot create table”?
Le cause da verificare per “MySQL Error 1005 Cannot create table” sono: colonne di una chiave esterna con tipo, lunghezza o attributi differenti; indice o tabella padre mancante; nome di vincolo già utilizzato nello stesso schema.
Quali controlli eseguire per “MySQL Error 1005 Cannot create table”?
Per diagnosticare “MySQL Error 1005 Cannot create table”, controlla nell’ordine: copiare il messaggio completo con errno e query; consultare SHOW ENGINE INNODB STATUS subito dopo l’errore; confrontare SHOW CREATE TABLE della tabella padre e di quella figlia. La soluzione è confermata quando la tabella viene creata; le chiavi esterne risultano presenti.