gh-ost is reporting wrong the number of multi-columns FK
メンテナーはふだん 10 日以内に返信
まだ誰も着手していません。
評価
調査の方向性
まず gh-ost の外部キー検査を追跡し、報告された INFORMATION_SCHEMA クエリを employees スキーマに対して再現します。複合 cit_count_fk 関係について、ツールが行数と constraint 名をどのように数えるかを確認します。完了条件は、報告される親側の外部キー数が 2 列の外部キーを 1 つの constraint として扱い、誤った数を報告しなくなることです。
索引モデルが issue の本文から書いたものです。
説明
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)
- 主要言語
- Go
- スター
- 13.6k
- フォーク
- 1.4k
- 平均マージ
- 9日 19時間
- マージ済み PR(30日)
- 1
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
github/gh-ost のほかの issue
-
`--resume` without `--execute` drops the ghost table it correctly skipped altering対応中かも @ajm188 が 55 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 86/100
メンテナーはふだん 10 日以内に返信
-
[Suggestion] Apply simple validation to alter command対応中かも @drkemp187 が 106 日前に担当しました。 オープンenhancement good first issue
難易度 2/5 1〜3時間 初心者へのやさしさ 64/100
github/gh-ost#1431 · コメント 4 件 ·
メンテナーはふだん 10 日以内に返信
-
Migration hangs when --attempt-instant-ddl succeeds対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープン
難易度 4/5 3〜5日 初心者へのやさしさ 30/100
メンテナーはふだん 10 日以内に返信
-
難易度 4/5 3〜5日 初心者へのやさしさ 42/100
メンテナーはふだん 10 日以内に返信
-
Atomic cut-over always fails on MySQL 9.1+: information_schema.processlist errors out (3854) while another session runs a non-BMP utf8mb4 statement対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープン
難易度 4/5 3〜5日 初心者へのやさしさ 52/100
github/gh-ost#1780 · コメント 1 件 ·
メンテナーはふだん 10 日以内に返信
似ている issue
-
難易度 1/5 1時間未満 初心者へのやさしさ 85/100
prime-radiant-inc/evener#6325 ·
メンテナーはふだん 1 日以内に返信
-
team:library-maintainers
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
padok-team/burrito#1208 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
bazel-contrib/rules_go#4784 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
betterleaks/betterleaks#484 ·
メンテナーはふだん 1 日以内に返信