在尝试创建新表时,MySQL给了我一个我无法解释的错误。
CREATE TABLE Products (
id INT NOT NULL,
PRIMARY KEY(id)
);
CREATE TABLE WarehouseMovements (
time DATETIME NOT NULL,
product1 INT NOT NULL,
product2 INT NOT NULL,
FOREIGN KEY WarehouseMovements(product1) REFERENCES Products(id),
FOREIGN KEY WarehouseMovements(product2) REFERENCES Products(id)
);
失败ERROR 1061 (42000): Duplicate key name 'WarehouseMovements'
。如果删除外键约束,则此操作成功,但是我要确保product1和product2实际指向某个地方。
默认引擎是InnoDB。
查询出了什么问题?
尝试区分FK名称:
CREATE TABLE Products (
id INT NOT NULL,
PRIMARY KEY(id)
);
CREATE TABLE WarehouseMovements (
time DATETIME NOT NULL,
product1 INT NOT NULL,
product2 INT NOT NULL,
FOREIGN KEY IX_WarehouseMovements_product1(product1) REFERENCES Products(id),
FOREIGN KEY IX_WarehouseMovements_product2(product2) REFERENCES Products(id)
);
更新
那是索引或FK名称,而不是表名称。请参阅create-table-foreign-
keys文档
:
[CONSTRAINT [symbol]] FOREIGN KEY
[index_name] (index_col_name, ...)
REFERENCES tbl_name (index_col_name,...)
哪说
index_name表示外键ID。如果给定,则如果显式定义外键的索引,则将忽略此操作。否则,如果MySQL为外键创建索引,它将使用index_name作为索引名称。
嗨,我知道有人问过这个问题,但我还没有找到正确的答案,为什么当我尝试做我的第二个插入: 我得到了错误: 错误1452(23000):无法添加或更新子行:外键约束失败(.,约束外键()引用()) 下面的DDL代码:
我们系统的所有用户都来自一个主“用户”类。同样,我们希望以相同的方式构造数据库,拥有一个主“用户”表,该表与特定用户类型的必要表连接,以提供额外的用户信息。 以这三个基本表格为例: 表用户 user_id|user_email|user_firstname|user_lastname|... 表雇员 user_id|employee_staff_number|... 表管理 user_id|adm
这是我的sql文件,我得到错误后,我运行sql文件
我试图在MySQL中创建一个有两个外键的表,这两个外键引用了其他两个表中的主键,但我得到一个errno:150错误,它将无法创建该表。 下面是所有3个表的SQL: 如有任何帮助,将不胜感激。
问题内容: 刚在Mac OS X 10.6上安装了MySQL 5.5,并且在许多表上都有一个奇怪的问题。下面是一个例子。插入行失败,但不应插入外键约束。它引用的外键确实存在。有任何想法吗? 更新 :多次删除并重新创建数据库后,我在上述插入失败后进行了操作,并得到了令人惊讶的结果。找不到父语言表!这似乎很奇怪…有什么想法吗? 更新2 :事实证明,这只是MySQL中的一个 巨大 错误。显然,最新版本的
我在MySQL中创建了以下三个表的基本模式,其中一个表有两个外键(documentreference表): 但是,我在运行时遇到以下错误: 错误1215:无法添加外键约束 SQL语句: 如果不存在,则创建表( int(5)非空自动增量, varchar(50), varchar(50), JSON,--single codableconcept数据类型 JSON,--创建的单个CodeableCo