foreign key varchar

Sto cercando di fare una foreign key tra due campi varchar. Ecco l'errore

Impossibile creare la tabella '.\marche\#sql-c6c_1d.frm' (errno: 150)

ed ecco le due tabelle, che sono identiche in tutte gli aspetti.

CREATE TABLE `tabella1` (                                                                                      
     `idtabella1` int(11) NOT NULL auto_increment,                                                                           
     `username` varchar(25) NOT NULL default '', PRIMARY KEY (`idtabella1`)                                                                                    
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC
 CREATE TABLE `tabella2` (                                                                                        
     `idtabella2` int(11) NOT NULL auto_increment,                                                                            
     `username` varchar(25) NOT NULL default '',                                                                            
     PRIMARY KEY (`idtabella2`)                                                                                     
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC

Questa la query foreign key:

ALTER TABLE tabella1 ADD FOREIGN KEY (username) REFERENCES tabella2 (username) 
ON DELETE NO ACTION ON UPDATE NO ACTION

Se i campi che provo a collegare sono degli int, non mi da errore ma se sono dei varchar si .

Non capisco perch? forse qualcosa in CHARSET che non va?

inviato 10 anni fa
Toto007
X 0 X

per prima cosa ti sconsiglio di usare campi varchar per chiavi e foreign key (sono pi lenti)

comunque il problema forse sta nel fatto che il campo della prima tabella che vai a referenziare con la foreign key non a sua volta una chiave o non ha un indice.

:bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda