![]() |
1
54
然后一切都应该按预期进行。 |
![]() |
2
49
在使用MySQL Workbench和MySQL 5.5.27时,我遇到了类似的问题。在我的例子中,问题是INT类型字段。在一个表中错误地使用INT无符号,在引用表中错误地使用INT。 |
![]() |
3
13
根据MySQL的版本,您可能需要首先在table1.field1上创建索引。 |
![]() |
4
8
这里的一个答案建议禁用外键完整性检查。这是个坏主意。这里有两个可能的罪犯:
|
![]() |
5
6
另一个提示:
即使您的数据类型看起来是相同的——在我的例子中,两列都是相同的
您还需要确保两列具有相同的
|
![]() |
6
5
还有另一个原因,尽管与其他原因稍有相似:我指的是一个表,它原来是MyISAM引擎,而不是InnoDB。 |
![]() |
7
5
如果您错误输入引用表的名称,MySQL也会抛出此错误。我把头发拔了一段时间,直到我意识到我错过了一封信
|
![]() |
8
5
一个选项(取决于具体情况)是禁用MySQL完整性检查:
|
![]() |
9
1
如果没有任何效果,请尝试以下方法: 外键名称是现有键的副本。检查外键的名称在数据库中是否唯一。只需在密钥名称的末尾添加几个随机字符即可测试。 |
![]() |
10
1
我在尝试使用外键引用非唯一字段时出错。(哪个 apparently (不允许) |
![]() |
11
0
|
![]() |
12
0
如果有人对此仍有问题,我尝试了上述所有解决方案(设置外键检查除外),但没有任何效果。问题是,当您引用第一个表时,某些数据库对表名区分大小写。我觉得这很奇怪,因为我以前从未在MySQL、Oracle上看到过这种情况,现在我在MariaDB上看到了这种情况。 例如: 如果不存在CADASTRO_MAQUINAS,则创建表( Id VARCHAR(16), 主键(Id) ); 如果信息不存在,则创建表( Id_Maquina VARCHAR(16)不为空, 约束FK_infos_cadastro_maquinas外键(Id_Maquina)引用cadastro_maquinas(Id) ); 如果我尝试使用cadastro_maquinas(小写)而不是cadastro_maquinas创建第二个表,我将收到此错误。 |
![]() |
13
0
|
|
14
0
在阅读了这里大部分建议的解决方案之后。我只是想,如果我列出所有可能导致这个错误的可能性,可能会有所帮助。 1、检查立柱的大小写 3、检查是否在两个表中为列创建了键(唯一,主) |
![]() |
15
0
在我的例子中,我在其中一个表中得到了旧的表定义MyISAM,显然我无法从另一个表中为它生成外键。也许这能帮助别人。 因此,这可能是由于两个数据库/字段定义之间的不一致性导致的。请尝试检查:
|
![]() |
16
0
对我来说,问题在于使用
|
![]() |
17
0
在尝试引用外键中的复合键时,也可能会遇到相同的错误。 例如:
|
![]() |
18
0
在我的例子中,可能是服务器错误删除了一个同名的表。 放弃整个shcema并重新创建它解决了问题。 |
![]() |
19
0
|
![]() |
20
0
如果您正在使用mysql workbench,并且在关系表中遇到此错误,那么可能有一个快速修复方法:删除它,让mysql workbench为您重新创建它。然后复制sql。修正了我的错误,没有问题。 |
![]() |
21
0
当我遇到这个问题时,是因为我在第一个表中将id设置为
|
![]() |
22
0
|
![]() |
hello_programmers · Mysql从其他表输出一列 1 年前 |
![]() |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
![]() |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |
![]() |
Popo · Sql查询:返回数据库中不可用的where条件 1 年前 |
|
Hamdan Nuramdani · 对账单中一周内不同表中的数据求和 1 年前 |
|
Kugelfisch · 用php为数据库加密数据 1 年前 |