1

テーブルをドロップしようとしていますが、この問題が発生する前に質問

正常に解決されましたが、テーブルを削除しようとすると、このエラーが発生しました:

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
4

1 に答える 1

3

を作成するとき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
于 2013-03-04T15:08:57.283 に答える