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

Offen
#1,328 0 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 10 Tagen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
35/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
go, mysql
Bereich
databases

Rechercherichtung

Beginne damit, die Fremdschlüsselinspektion von gh-ost nachzuverfolgen, und führe die gemeldeten INFORMATION_SCHEMA-Abfragen für das employees-Schema erneut aus. Prüfe, wie das Tool Zeilen im Vergleich zu Constraint-Namen für die zusammengesetzte cit_count_fk-Beziehung zählt. Die Aufgabe ist abgeschlossen, wenn die gemeldete Fremdschlüsselanzahl auf der Parent-Seite den zweispaltigen Fremdschlüssel als eine Constraint behandelt und die falsche Anzahl nicht mehr meldet.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

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)
Vorherrschende Sprache
Go
Sterne
13.6k
Forks
1.4k
Ø Merge
9 T. 19 Std.
Gemergte PRs (30 T.)
1

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus github/gh-ost

Alle Issues in github/gh-ost

Ähnliche Issues

Weitere Issues zu Go

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.