MySQL Workbench 忽略外键

标签 mysql foreign-keys mysql-workbench

在处理 MySQL Workbench 中的 SQL 编辑器时,我偶然发现了一些奇怪的东西,其中执行似乎忽略了外键约束。这是一个例子:

create database testdb;

use testdb;

create table t1 (
 `test` INT,
 PRIMARY KEY (`test`)
) ENGINE = InnoDB;

create table t2 (
`test1` INT,
`test2` INT,
 FOREIGN KEY (`test2`) REFERENCES t1(test),
PRIMARY KEY (`test1`)
) ENGINE = InnoDB;

insert into t1 values (1);

insert into t2 values (1,1);
insert into t2 values (2,2);

在此示例中,insert into t2 values (2,2); 应该会失败,因为 t1 中没有行的列 test 为 2。

我在 phpMyAdmin 中测试过,它正确地失败并给出了违反外键约束的错误,但是在 MySQL Workbench 中它没有给出错误,并且它被插入到表中(我已经检查过使用 phpMyAdmin)。

这对我来说不是什么大问题,因为我可以使用不同的客户端来输入 SQL,但我很想知道为什么会这样,因为我对外键的理解是值需要存在于引用表。

MySQL版本为5.5.16,引擎为InnoDB。

最佳答案

我建议你更新工作台,我只有在使用我的 mac 时遇到同样的问题,创建的表没有约束但是如果你运行生成的 sql 它会正确地创建所有东西,我使用我的 windows 来创建它工作完美,经过大量测试后,我更新了 Mac 上的工作台版本,现在一切正常。

关于MySQL Workbench 忽略外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12371593/

相关文章:

Java MySQL 语法错误异常

mysql - Sinatra 中带有远程 MySQL 的 ActiveRecord

数据库:大量的外键

php - 在 PHP 中推进与数据库超时的交互

php - 引用多个外键php mysql

postgresql - 如何在 PostgreSQL 中更改 "REFERENCES"?

mysql - 客户端连接错误 : invalid values of 'columnLabel'

md5 - MySQL Workbench MD5列-如何?

mysql - IIF 不像 Access 2007 中的语句

MySQL - 在 WHERE 子句中使用 COUNT(*)?