ここでエラーが発生している理由がわかりません。MySQLエラー#1005 errno 150
CURRENT TABLES:
ALTER TABLE `FYP`.`Disclosure`
ADD CONSTRAINT `client`
FOREIGN KEY (`ClientID` , `Postcode` , `Age`)
REFERENCES `FYP`.`Clients` (`ClientID` , `Postcode` , `Age`)
ON DELETE NO ACTION
ON UPDATE CASCADE;
外部キーを追加しようと
CREATE TABLE `Clients` (
`ClientID` varchar(8) NOT NULL,
`Age` varchar(20) NOT NULL,
`Postcode` varchar(6) NOT NULL,
PRIMARY KEY (`ClientID`,`Age`,`Postcode`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `Disclosure` (
`ClientID` varchar(8) NOT NULL,
`Fname` varchar(100) DEFAULT NULL,
`Lname` varchar(100) DEFAULT NULL,
`Email` varchar(100) DEFAULT NULL,
`Postcode` varchar(6) NOT NULL,
`Offender` varchar(45) DEFAULT NULL,
`Location` varchar(100) DEFAULT NULL,
`Age` varchar(20) NOT NULL,
`Support` varchar(45) DEFAULT NULL,
`Disclosure` varchar(1000) DEFAULT NULL,
PRIMARY KEY (`ClientID`,`Postcode`,`Age`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
私はエラーが何であるかを確認するには、show状態を使用してみましたが、私はまだそれを把握するカント。
SHOW ENGINE INNODB STATUS
リターン:
------------------------ LATEST FOREIGN KEY ERROR ------ ------------------テーブルFYP /#のSQL-266_33bの外部キー制約で171102 11時35分10秒のエラー:
FOREIGN KEY(
ClientID
、Postcode
、Age
)参考文献FYP
。 UPDATE CASCADE ON DELETE NO ACTION ONClients
(ClientID
、Postcode
、Age
):参照される列が最初の列として表示され、参照 テーブルのインデックス、またはテーブル内の 列型と一致していない参照されたテーブルを見つけることができません 制約です。 > = InnoDB-4.1.12で作成されたテーブルでENUMとSET という内部ストレージタイプが変更され、新しいテーブルのカラムで 古いテーブルのカラムを参照できないことに注意してください。正しい外部キー定義については、 http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html を参照してください。
を行う必要があります)=この問題を修正ありがとう – Luke