0

私はグーグルを使用しており、この質問が何度も聞かれていることを知っています. しかし、私の問題は、人々が提供する解決策が私にはうまくいかないことです。

問題は、このよくある問題です: 2 つのテーブル ( exercisetypexerc ) があります。演習では、 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;
4

1 に答える 1

2

うーん、あなたの発言は間違っています。参照している列がありません。

ALTER TABLE exercise
ADD FOREIGN KEY(TYPEXERC_ID) references typexerc(typexerc_id);
  • sqlfiddleでライブで動作することを確認してください。
于 2013-11-05T13:01:55.017 に答える