1

我有 2 个名为 mEmpl 和 mOrder 的表。

mEmpl 有 9 个字段:

IDEmployee (int), ShortName (varchar), Name (varchar), DBegin (datetime 主键), DEnd (datetime 主键), Directory (varchar), Mode (varchar 主键), PartTime (varchar), IDJob (int)

mOrder 有 11 个字段:

IDOrder (int), NrOrder (int), OrderDesc (varchar), IDOwner (int), Budget (float), DBegin (datetime), DEnd (datetime), Mode (varchar), ArtCost (int), BaseRate (int),基本项目(整数)

当我尝试添加mOrder(DBegin, DEnd, and Mode)引用 mEmpl 的外键时,它总是会引发错误消息:

ERROR 1005 (HY000): Can't create table 'spezet.#sql-4d4_1' (errno: 150)

但是,如果我只是像这样向 DBegin 添加一个外键:

ALTER TABLE mOrder ADD FOREIGN KEY (DBegin) REFERENCES mEmpl(DBegin);

它没有引发任何错误!DBegin 成功地指向 mEmpl.DBegin 主键。

谁能向我描述这里出了什么问题,或者 MySQL 是否确实不能同时指向 2 个日期时间字段?提前感谢您的回复。

4

1 回答 1

2

您可以通过以 root 身份登录 MySQL 并输入以下内容来查找问题原因的更多详细信息:-

SHOW ENGINE INNODB STATUS;

这可能会有所帮助。我怀疑问题的原因是在创建外键时,您需要在被引用的表上创建一个索引,其中包含被引用的列作为索引的第一列,按照外键约束中指定的顺序。

请参阅此处了解更多信息。

于 2012-07-19T11:34:28.190 回答