gh-ost is reporting wrong the number of multi-columns FK

Ouverte
#1,328 0 commentaires 1 réaction 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 10 jours

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
35/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
go, mysql
Domaine
databases

Piste de recherche

Commencez par suivre l’inspection des clés étrangères de gh-ost et reproduisez les requêtes INFORMATION_SCHEMA signalées sur le schéma employees. Vérifiez comment l’outil compte les lignes par rapport aux noms de contraintes pour la relation composite cit_count_fk. C’est terminé lorsque le nombre signalé de clés étrangères du côté parent traite la clé étrangère à deux colonnes comme une seule contrainte et ne signale plus le nombre incorrect.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

gh-ost is reporting:
ERROR Found 2 parent-side foreign keys on employees.countries. Parent-side foreign keys are not supported. Bailing out

mysql> SELECT SUM(REFERENCED_TABLE_NAME IS NOT NULL AND TABLE_SCHEMA='employees' AND TABLE_NAME='countries') as num_child_side_fk,
    ->        SUM(REFERENCED_TABLE_NAME IS NOT NULL AND REFERENCED_TABLE_SCHEMA='employees' AND REFERENCED_TABLE_NAME='countries') as num_parent_side_fk
    -> FROM   INFORMATION_SCHEMA.KEY_COLUMN_USAGE
    -> WHERE  REFERENCED_TABLE_NAME IS NOT NULL
    -> AND    ((TABLE_SCHEMA='employees' AND TABLE_NAME='countries') OR (REFERENCED_TABLE_SCHEMA='employees' AND REFERENCED_TABLE_NAME='countries'));
+-------------------+--------------------+
| num_child_side_fk | num_parent_side_fk |
+-------------------+--------------------+
|                 0 |                  2 |
+-------------------+--------------------+
1 row in set (0.00 sec)

But it is a 2-columns FK

mysql> SELECT refcons.constraint_schema,
    ->        refcons.table_name,
    ->        refcons.referenced_table_name,
    ->        refcons.constraint_name,
    ->        keycol.column_name
    -> FROM   information_schema.referential_constraints refcons
    -> JOIN   information_schema.key_column_usage keycol
    -> ON     refcons.constraint_schema = keycol.table_schema
    -> AND    refcons.table_name = keycol.table_name
    -> AND    refcons.constraint_name = keycol.constraint_name
    -> WHERE  refcons.constraint_schema = 'employees'
    -> AND    refcons.referenced_table_name = 'countries';
+-------------------+------------+-----------------------+-----------------+-------------+
| CONSTRAINT_SCHEMA | TABLE_NAME | REFERENCED_TABLE_NAME | CONSTRAINT_NAME | COLUMN_NAME |
+-------------------+------------+-----------------------+-----------------+-------------+
| employees         | cities     | countries             | cit_count_fk    | country_id  |
| employees         | cities     | countries             | cit_count_fk    | cod_empresa |
+-------------------+------------+-----------------------+-----------------+-------------+
2 rows in set (0.00 sec)
Langage dominant
Go
Étoiles
13.6k
Forks
1.4k
Merge moyen
9 j 19 h
PR mergées (30 j)
1

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de github/gh-ost

Toutes les issues de github/gh-ost

Issues similaires

Plus d'issues Go

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.