Error 1215 de MySQL: no se puede agregar restricción de key externa, innodb, nuevas tablas

Me gusta agregar keys externas, esta tabla, pero no funciona! Si bash que las nuevas tablas no funcionen, pero otras tablas viejas funcionan. ¿Cuál es el problema? Pls me ayuda

CREATE TABLE `tanora` ( `idtanora` int(11) NOT NULL, `tema` varchar(250) NULL, `megjegyzes` varchar(255) DEFAULT NULL, `datum` date NOT NULL, `osztaly` varchar(20) NOT NULL, `megtartott` int(11) NOT NULL, `targy` varchar(45) NOT NULL, `kezdete` time NOT NULL, `vege` time NOT NULL, PRIMARY KEY (`idtanora`), UNIQUE KEY `idtanora_UNIQUE` (`idtanora`), KEY `osztazon_idx` (`osztaly`) ) ENGINE=InnoDB DEFAULT CHARSET=latin2 COLLATE=latin2_hungarian_ci; CREATE TABLE `osztaly` ( `osztalyazon` varchar(20) NOT NULL, `osztalyfonokazon` varchar(11) NOT NULL, `osztalynev` varchar(45) NOT NULL, `indul` year(4) NOT NULL, PRIMARY KEY (`osztalyazon`), UNIQUE KEY `osztalyazon_UNIQUE` (`osztalyazon`), KEY `ofazon_idx` (`osztalyfonokazon`), CONSTRAINT `tanarazon01` FOREIGN KEY (`osztalyfonokazon`) REFERENCES `tanar` (`szemelyiszam`) ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=latin2 COLLATE=latin2_hungarian_ci; ERROR 1215: Cannot add foreign key constraint SQL Statement: ALTER TABLE `enaplo`.`tanora` ADD CONSTRAINT `osztalyra` FOREIGN KEY (`osztaly`) REFERENCES `enaplo`.`osztaly` (`osztalyazon`) ON DELETE NO ACTION ON UPDATE NO ACTION ERROR: Error when running failback script. Details follow. ERROR 1050: Table 'tanora' already exists SQL Statement: CREATE TABLE `tanora` ( `idtanora` int(11) NOT NULL, `tema` varchar(250) NOT NULL, `megjegyzes` varchar(255) DEFAULT NULL, `datum` date NOT NULL, `osztaly` varchar(20) NOT NULL, `megtartott` int(11) NOT NULL, `targy` varchar(45) NOT NULL, `kezdete` time NOT NULL, `vege` time NOT NULL, PRIMARY KEY (`idtanora`), UNIQUE KEY `idtanora_UNIQUE` (`idtanora`) ) ENGINE=InnoDB DEFAULT CHARSET=latin2 COLLATE=latin2_hungarian_ci foreign key (osztaly) references enaplo.osztaly (osztalyazon) on delete no action on update no action: Cannot find an index in the referenced table where the referenced columns appear as the first columns, or column types in the table and the referenced table do not match for constraint. Note that the internal storage type of ENUM and SET changed in tables created with >= InnoDB-4.1.12, and such columns in old tables cannot be referenced by such columns in new tables. See http://dev.mysql.com/doc/refman/5.6/en/innodb-foreign-key-constraints.html for correct foreign key definition. 

¿Cuál es el problema, ayuda pls ?!

parece que tu publicación es principalmente código; por favor agregue más detalles. Parece que su publicación es principalmente código; por favor agregue más detalles. Parece que su publicación es principalmente código; por favor agregue más detalles. Parece que su publicación es principalmente código; por favor agregue más detalles. Parece que su publicación es principalmente código; por favor agregue más detalles. Parece que su publicación es principalmente código; por favor agregue más detalles. Parece que su publicación es principalmente código; por favor agrega algunos más detalles.

Asegúrese de tener definiciones de columna coherentes :

En su tabla de references osztaly la columna de key externa osztalyfonokazon debe definirse con exactamente las mismas características que se aplican al campo al que se hace reference en la tabla de tanar .

Actualmente, osztalyfonokazon en osztaly se define de la siguiente manera:

 `osztalyfonokazon` VARCHAR(11) NOT NULL 

Entonces, en la tabla de szemelyiszam definición de szemelyiszam debería verse como

 `szemelyiszam` VARCHAR(11) PRIMARY KEY 

o

 `szemelyiszam` VARCHAR(11) UNIQUE KEY NOT NULL 

Depende de tus necesidades

De cualquier forma, asegúrese de que szemelyiszam sea ​​una PRIMARY KEY o al less una UNIQUE KEY declarada NOT NULL en la tabla de reference de tanar .

Además, MySQL requiere que las columnas a las que se hace reference estén indexadas por razones de performance. Sin embargo, el sistema no exige el requisito de que las columnas a las que se hace reference sean ÚNICAS o declaradas NOT NULL. El event handling references de keys externas a keys no únicas o keys que contienen valores NULL no está bien definido para operaciones tales como ACTUALIZAR o ELIMINAR CASCADA. Se le recomienda utilizar keys externas que solo hacen reference a keys ÚNICAS (incluidas las PRIMARIAS) y NO NULAS.

Fuente