1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RDS ブルー/グリーンデプロイ作成時のエラーの解消

Posted at

mysql5.7のRDSを8.0に上げるためにブルー/グリーンデプロイメントのグリーン環境を作成した際に、エラーで詰まりました。

解決

  1. RDSのインスタンスを選択
  2. ログとイベントタブのログで、PrePatchCompatibility.logを検索
  3. PrePatchCompatibility.logを選択して見るをクリックするとエラーログが見れる。

私が出てたエラーは、こちらでした。

26) Check for indexes that are too large to work on higher versions of MySQL Server than 5.7
	The following indexes were made too large for their format in a version of MySQL prior to 5.7.34. Normally, indexes within tables with compact or redundant row formats shouldn’t be larger than 767 bytes. For more information, see https://bugs.mysql.com/bug.php?id=102597 and https://bugs.mysql.com/bug.php?id=99791.

調べると、ROW_FORMATに異常がありそうだったので確認してみました。

SHOW TABLE STATUS FROM [テーブル名];

mysql5.7ではutf8を使っていたので、ROW_FORMATがCOMPACTでも良かったのですが、
mysql8.0以降ではutf8mb4がデフォルトになるため、ROW_FORMATがDYNAMICまたはCOMPRESSEDでないとデータ量が少なくインデックスが効かなくなるので変更が必要でした。
詳しくはこちらの記事を参照ください。
https://qiita.com/TanakanoAnchan/items/a6459b44557f2bdd5726

そのため、PrePatchCompatibility.logで指摘されていたカラムのROW_FORMATをDYNAMICにしました。

ALTER TABLE m_product ROW_FORMAT=Dynamic;

これでグリーン環境を作ることができました。

余談

その他に調べてた時にやったことをメモしておきます。

ステータスで無効な設定というエラーが出ていました。

DBのupdateができるかのチェックをします。

$mysqlcheck -u [DBのユーザー名] -p --all-databases --check-upgrade -h [RDSのエンドポイント]
Enter password:[パスワード入力]

そうすると以下が出てました。

Warning  : Trigger [テーブル名] does not have CREATED attribute.

TRIGGERを調べてみると

mysql>SHOW TRIGGERS LIKE [テーブル名];

Createdがnullになっていました。
なのでTRIGGERを再作成してCreatedに日時が登録されました。
TRIGGERの再作成時の記事↓
TRIGGERの作成時にsql_modeというものに出会った
これでmysqlcheckすると全てOKになりました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?