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