0
CREATE TABLE `db`.`employee_meeting` (
  `employee_id` BIGINT(20) NOT NULL,
  `meeting_id` BIGINT(20) NOT NULL,
  PRIMARY KEY (`employee_id`, `meeting_id`),
  INDEX `FK_meeting`(`meeting_id`),
  CONSTRAINT `FK_employee` FOREIGN KEY `FK_employee` (`employee_id`)
    REFERENCES `employee` (`employee_id`)
    ON DELETE RESTRICT
    ON UPDATE RESTRICT,
  CONSTRAINT `FK_meeting` FOREIGN KEY `FK_meeting` (`meeting_id`)
    REFERENCES `meeting` (`meeting_id`)
    ON DELETE RESTRICT
    ON UPDATE RESTRICT
4

2 に答える 2

1

おそらく、他の 2 つのテーブルがまだ存在しないためです。以下は機能します:

CREATE TABLE employee ( 
  employee_id BIGINT(20) NOT NULL,
  PRIMARY KEY (employee_id)
);

CREATE TABLE meeting ( 
  meeting_id BIGINT(20) NOT NULL,
  PRIMARY KEY (meeting_id)
);

CREATE TABLE employee_meeting ( 
  employee_id BIGINT(20) NOT NULL, 
  meeting_id BIGINT(20) NOT NULL, 

  PRIMARY KEY (employee_id, meeting_id), 

  INDEX FK_meeting(meeting_id), 

  CONSTRAINT FK_employee 
    FOREIGN KEY FK_employee (employee_id) 
    REFERENCES employee (employee_id) 
    ON DELETE RESTRICT 
    ON UPDATE RESTRICT, 

  CONSTRAINT FK_meeting 
    FOREIGN KEY FK_meeting (meeting_id) 
    REFERENCES meeting (meeting_id) 
    ON DELETE RESTRICT 
    ON UPDATE RESTRICT
  )
于 2013-11-10T18:55:08.493 に答える
0

エラー 150 は、外部キー エラーを処理します。スキーマは簡単に作成できるため、スキーマを作成するときにかなり定期的にそれらに遭遇するように準備してください。

エンジンに問題を尋ねるには、次のコマンドを実行します。

SHOW ENGINE INNODB STATUS

これにより、最新のエラーが表示されます。

それでも解決しない場合は、次の一般的なヒントに従ってください。

  • 外部キーが参照する親テーブルが存在することを確認してください。
  • 親テーブルが NULL でない場合でも、子テーブルが NULL になる可能性があることを除いて、親テーブルと子テーブルの両方で列がまったく同じになるように定義されていることを確認してください。
  • 一意の制約名を使用していることを確認してください...実際には errno 121 である可能性があります。そのエラーも頻繁に発生します。

通常、列の定義は私をつまずかせるものです。したがって、親テーブルに が含まれていることを確認してBIGINT(20)ください。UNSIGNEDINT(10)

于 2013-11-10T19:25:51.357 に答える