2016-09-27 3 views
0

En MySQL 5.7.11, l'ajout d'un indice composite où l'une des colonnes est un résultat de colonne généré virtuels dans l'erreur suivante:Code d'erreur: 3175. Impossible de créer l'index sur la colonne virtuelle dont la colonne base a contrainte étrangère

Error Code: 3175. Cannot create index on virtual column whose base column has foreign constraint

En réalité, les colonnes de base à partir desquelles la colonne virtuelle est générée n'ont aucune contrainte étrangère, de sorte que le message d'erreur est inexplicable.

L'erreur ne se produit pas dans MySQL 5.7.15.

Répondre

0

Le message d'erreur est incorrect. Le problème réel est que deux des autres colonnes de l'index ont des clés étrangères qui sont définies sur on update cascade. Ce n'est pas autorisé avant MySQL 5.7.14:

In MySQL 5.7.13 and earlier, InnoDB does not permit defining cascading referential actions on non-virtual foreign key columns that are explicitly included in a virtual index. This restriction is lifted in MySQL 5.7.14. (source)

Modification des clés de on update restrict fait l'erreur disparaître. Cela explique aussi pourquoi cette erreur ne se produit pas dans MySQL 5.7.15.