1

何らかの理由で、この MySQL は失敗します。

CREATE SCHEMA IF NOT EXISTS `partB` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ;
USE `partB`;

CREATE TABLE Employees ( ssn CHAR(11),
Name CHAR(30),
mlot INTEGER,
PRIMARY KEY(ssn))
ENGINE = InnoDB;

CREATE TABLE Dept_Mgr ( did INTEGER,
dname CHAR(20),
ssn CHAR(11) NOT NULL,
PRIMARY KEY (did),
FOREIGN KEY (ssn) REFERENCES Employees
ON DELETE NO ACTION)
ENGINE = InnoDB;

エラーが発生します:

エラー 1005 (HY000): テーブルを作成できません partb.dept_mgr(errno: 150)

何が原因でしょうか?

4

3 に答える 3

2

キーの外部テーブルの列を指定する必要があります。

FOREIGN KEY (ssn) REFERENCES Employees (ssn) ...

于 2010-02-25T01:54:38.750 に答える
1

このコマンド:

SHOW ENGINE INNODB STATUS;

外部キーの作成に問題があるときの友達です。出力(要約)

------------------------
LATEST FOREIGN KEY ERROR
------------------------
100225  2:51:42 Error in foreign key constraint of table test/dept_mgr:
FOREIGN KEY (ssn) REFERENCES Employees
ON DELETE NO ACTION)
ENGINE = InnoDB:
Syntax error close to:

ON DELETE NO ACTION)
ENGINE = InnoDB

ステートメントを次のように変更した場合:

CREATE TABLE Dept_Mgr ( 
    did INTEGER,
    dname CHAR(20),
    ssn CHAR(11) NOT NULL,
    PRIMARY KEY (did),
    FOREIGN KEY (ssn) REFERENCES Employees(ssn)
) engine = innodb;

それは機能します。

于 2010-02-25T01:53:55.273 に答える
0

列ではなく、テーブルを参照する外部キーのみがあります。

試してください: Employee.ssn を参照します

于 2010-02-25T01:53:39.907 に答える