0

在 MySQL 5.7.11 中,添加其中一个列是虚拟生成列的复合索引会导致以下错误:

错误代码:3175。无法在其基列具有外部约束的虚拟列上创建索引

实际上,生成虚拟列的基列没有任何外部约束,因此错误消息是莫名其妙的。

MySQL 5.7.15 中不会出现该错误。

4

1 回答 1

0

错误信息是错误的。实际问题是索引中的其他两列定义了外键,设置为on update cascade. 在 MySQL 5.7.14 之前这是不允许的:

在 MySQL 5.7.13 及更早版本中,InnoDB 不允许在虚拟索引中显式包含的非虚拟外键列上定义级联引用操作。MySQL 5.7.14 中取消了此限制。(来源

更改键以on update restrict使错误消失。这也解释了为什么在 MySQL 5.7.15 中不会出现这个错误。

于 2016-09-27T16:01:34.467 回答