0

私の人生では、MySQL がこのステートメントを好まない理由を見つけることができません。

CREATE TABLE IF NOT EXISTS personnel
(
    id INTEGER AUTO_INCREMENT PRIMARY KEY,
    firstname VARCHAR(30) NOT NULL,
    lastname VARCHAR(30) NOT NULL,
    role VARCHAR(50) NOT NULL,
    line_manager INTEGER NULL,

    FOREIGN KEY (role) REFERENCES roles(name)
        ON DELETE CASCADE
        ON UPDATE CASCADE,
    FOREIGN KEY (line_manager) REFERENCES personnel(id)
        ON DELETE CASCADE
        ON UPDATE CASCADE
) ENGINE=InnoDB;

これを挿入した後の MySQL からの出力結果はERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELETE CASCADE UPDATE CASCADE, FOREIGN KEY (line_manager) REFERENCES personnel(id) ' at line 10.

誰かが私が間違っていることを提案できますか?

4

1 に答える 1

2

ねえ、あなたの mysql クエリをチェックしましたが、うまくいきました。次の制約をチェックする必要があると思います

1) table roles must have same **engine** that is InnoDB
2) the length of both column that is personnel(role) and roles(name) must be **equal**
3) column roles(name) must be **primary key**

このことを確認するだけで、うまくいくと思います

于 2013-07-18T12:11:08.623 に答える