not support xengine,if the default engine is xengine, gh-ost occurs: ERROR Error 1105: Unsupported collation on string indexed column hint

オープン
#1,585 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 10 日以内に返信

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
45/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
go, mysql
領域
database

調査の方向性

報告された xengine のテーブル定義を再現することから始め、サポートされていない照合順序エラーを引き起こす changelog テーブル作成の経路を追跡します。gh-ost がインデックス付き String カラムの定義をどのようにコピーするかを確認し、そのうえで、サポートされている MySQL エンジンを壊すことなく、このスキーマで changelog の作成が成功することを検証します。

索引モデルが issue の本文から書いたものです。

説明

bug

root cause is xengine is not support ascii CHARACTER
mysql> CREATE TABLE _test_26_ghc ( id bigint(20) NOT NULL AUTO_INCREMENT, last_update timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, hint varchar(64) CHARACTER SET ascii NOT NULL, value varchar(4096) CHARACTER SET ascii NOT NULL, PRIMARY KEY (id), UNIQUE KEY hint_uidx (hint) ) ENGINE=xengine AUTO_INCREMENT=256 DEFAULT CHARSET=utf8mb4;
ERROR 1105 (HY000): Unsupported collation on string indexed column hint. Consider change to other collation (binary, gbk_bin, gbk_chinese_ci, latin1_bin, utf8_bin, utf8_general_ci, utf8mb4_0900_ai_ci, utf8mb4_bin, utf8mb4_general_ci).
mysql>

errors:
2025-09-28 15:13:46 INFO starting gh-ost 1.1.4
2025-09-28 15:13:46 INFO Migrating sbtest.test_26
2025-09-28 15:13:46 INFO inspector connection validated on xxxxx:3306
2025-09-28 15:13:46 INFO User has REPLICATION CLIENT, REPLICATION SLAVE privileges, and has ALL privileges on sbtest.*
2025-09-28 15:13:46 INFO binary logs validated on xxxxx:3306
2025-09-28 15:13:46 INFO Inspector initiated on xxxxx:3306, version 8.0.13
2025-09-28 15:13:46 INFO Table found. Engine=XENGINE
2025-09-28 15:13:46 INFO Estimated number of rows via EXPLAIN: 20
2025-09-28 15:13:46 INFO Master forced to be xxxxx:3306
2025-09-28 15:13:46 INFO log_slave_updates validated on xxxxx:3306
2025-09-28 15:13:46 INFO streamer connection validated on xxxxx:3306
[2025/09/28 15:13:46] [info] binlogsyncer.go:133 create BinlogSyncer with config {99999 mysql xxxxx 3306 dba false false false UTC true 0 0s 0s 0 false}
2025-09-28 15:13:46 INFO Connecting binlog streamer at mysql-bin.000005:1014
[2025/09/28 15:13:46] [info] binlogsyncer.go:354 begin to sync binlog from position (mysql-bin.000005, 1014)
[2025/09/28 15:13:46] [info] binlogsyncer.go:203 register slave for master server xxxxx:3306
[2025/09/28 15:13:46] [info] binlogsyncer.go:723 rotate to (mysql-bin.000005, 1014)
2025-09-28 15:13:46 INFO rotate to next log from mysql-bin.000005:0 to mysql-bin.000005
2025-09-28 15:13:46 INFO applier connection validated on xxxxx:3306
2025-09-28 15:13:46 INFO applier connection validated on xxxxx:3306
2025-09-28 15:13:46 INFO will use time_zone='+08:00' on applier
2025-09-28 15:13:46 INFO Examining table structure on applier
2025-09-28 15:13:46 INFO Applier initiated on xxxxx:3306, version 8.0.13
2025-09-28 15:13:46 INFO Dropping table sbtest._test_26_gho
2025-09-28 15:13:46 INFO Table dropped
2025-09-28 15:13:46 INFO Dropping table sbtest._test_26_ghc
2025-09-28 15:13:46 INFO Table dropped
2025-09-28 15:13:46 INFO Creating changelog table sbtest._test_26_ghc
2025-09-28 15:13:46 ERROR Error 1105: Unsupported collation on string indexed column hint. Consider change to other collation (binary, gbk_bin, gbk_chinese_ci, latin1_bin, utf8_bin, utf8_general_ci, utf8mb4_0900_ai_ci, utf8mb4_bin, utf8mb4_general_ci).
2025-09-28 15:13:46 ERROR Unable to create changelog table, see further error details. Perhaps a previous migration failed without dropping the table? OR is there a running migration? Bailing out
2025-09-28 15:13:46 INFO Tearing down inspector
2025-09-28 15:13:46 INFO Tearing down applier
2025-09-28 15:13:46 INFO Tearing down streamer
2025-09-28 15:13:46 FATAL Error 1105: Unsupported collation on string indexed column hint. Consider change to other collation (binary, gbk_bin, gbk_chinese_ci, latin1_bin, utf8_bin, utf8_general_ci, utf8mb4_0900_ai_ci, utf8mb4_bin, utf8mb4_general_ci).

主要言語
Go
スター
13.6k
フォーク
1.4k
平均マージ
9日 19時間
マージ済み PR(30日)
1

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

github/gh-ost のほかの issue

github/gh-ost の issue をすべて見る

似ている issue

Go の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。