错误1005无法创建表

问题描述:

我尝试删除表之前,我有这个问题QUESTION错误1005无法创建表

,并成功地解决了,但现在我想删除表,我得到这个错误:

ERROR: Error 1005: Can't create table 'radiotaxi_final.#sql-108_28' (errno: 150) 

声明:

ALTER TABLE `RadioTaxi_Final`.`DireccionConductor` CHANGE COLUMN `Conductor_cedula` `Conductor_cedula` INT(11) NOT NULL , 

    ADD CONSTRAINT `fk_DireccionConductor_Conductor1` 

    FOREIGN KEY (`Conductor_cedula`) 

    REFERENCES `RadioTaxi_Final`.`Conductor` (`cedula`) 

    ON DELETE NO ACTION 

    ON UPDATE NO ACTION 

结果:

SQL script execution finished: statements: 11 succeeded, 1 failed 

表:

CREATE TABLE `conductor` ( `cedula` int(10) unsigned NOT NULL,  `apellidos` varchar(30) COLLATE utf8_spanish2_ci NOT NULL,  `nombres` varchar(30) COLLATE utf8_spanish2_ci NOT NULL,  `fechaNacimiento` date NOT NULL,  PRIMARY KEY (`cedula`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish2_ci 
+1

150是外键创建错误。请张贴'RadioTaxi_Final.Conductor'表。 – 2013-03-04 14:55:13

当创建一个FOREIGN KEY,引用和引用列的数据类型必须是正好相同。在您参考的表格中,conductor.cedula的类型为INT(10) UNSIGNED。您试图在DireccionConductor.Conductor_cedula上创建FK作为INT(11),隐含地为SIGNED。修改您的语句如下,以使类型匹配:

ALTER TABLE `RadioTaxi_Final`.`DireccionConductor` 
    /* INT(10) UNSIGNED type matches the referenced table */ 
    CHANGE COLUMN `Conductor_cedula` `Conductor_cedula` INT(10) UNSIGNED NOT NULL , 
    ADD CONSTRAINT `fk_DireccionConductor_Conductor1` 
    FOREIGN KEY (`Conductor_cedula`) 
    REFERENCES `RadioTaxi_Final`.`Conductor` (`cedula`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION 
+0

谢谢你的工作,但是像这样:ALTER TABLE'RadioTaxi_Final'.'DireccionConductor' /* INT(10)UNSIGNED类型匹配参考表*/ CHANGE COLUMN'Conductor_cedula''Conductor_cedula' INT(10)UNSIGNED NOT NULL, ADD CONSTRAINT'fk_DireccionConductor_Conductor1' 外键('Conductor_cedula') 参考'RadioTaxi_Final'.'Conductor'('cedula') ON DELETE NO ACTION ON UPDATE NO ACTION – user2132046 2013-03-04 15:37:04