私はグーグルを使用しており、この質問が何度も聞かれていることを知っています. しかし、私の問題は、人々が提供する解決策が私にはうまくいかないことです。
問題は、このよくある問題です: 2 つのテーブル ( exerciseとtypexerc ) があります。演習では、 typexercを参照する外部キーを追加したいと思います。
最初に、列TYPEXERC_IDを追加して実行しalter table
ますが、エラーは発生しません。次に、外部キーも追加するalter table
と、次のようになります。
エラー コード: 1215。外部キー制約を追加できません 0.374 秒
ashow columns from exercise;
と aを実行しshow columns from typexerc;
て、両方の列のデータ型が同じであることを確認します (これは、人々がこの質問に対して常に行う解決策です)。どちらの場合も、smallint(6) です。
次に、テーブルが異なるエンジンで作成されているかどうかを確認します (1 つはダイアグラムからフォワード エンジニアリングを使用し、もう 1 つは SQL を使用して手動で行いました)。このために私は ashow table status where name='exercise';
と aを実行show table status where name='typexerc';
し、どちらの場合もエンジンは InnoDB バージョン 10 です。
だから私は何をすべきかわかりません。どんな助けでも大歓迎です。私はまったく初心者です。
TYPEXERC:
CREATE TABLE `typexerc` (
`TYPEXERC_ID` smallint(6) NOT NULL,
`TYPEXERC_NAME` varchar(25) NOT NULL,
PRIMARY KEY (`TYPEXERC_ID`),
UNIQUE KEY `TYPEXERC_ID` (`TYPEXERC_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
エクササイズ:
CREATE TABLE `exercise` (
`EXER_ID` int(11) NOT NULL,
`EXER_DATE` date NOT NULL,
`EXER_TIME` time NOT NULL,
`EXER_CAL` smallint(6) NOT NULL,
`TYPEXERC_ID` smallint(6) NOT NULL,
PRIMARY KEY (`EXER_ID`),
UNIQUE KEY `EXER_ID` (`EXER_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=' ';
そして今私は:
ALTER TABLE exercise
ADD FOREIGN KEY(TYPEXERC_ID) references typexerc;