メインコンテンツに移動

MySQL8のリストアについて

2022.12.17   2025.08.24
Drupal

MySQL8を採用して運用を始めたら、dumpしてlocal環境でリストアする際に文字コードの記述を修正しないとリストアができまない。

CREATE TABLE `access_token` (   `id` int NOT NULL AUTO_INCREMENT,   `uuid` varchar(128) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL,   `user_id` int unsigned NOT NULL COMMENT 'The ID of the target entity.',   `value` varchar(128) DEFAULT NULL,   `expire` int DEFAULT NULL,   `entity_type` varchar(255) DEFAULT NULL,   `entity_id` int DEFAULT NULL,   `created` int DEFAULT NULL,   `changed` int DEFAULT NULL,   PRIMARY KEY (`id`),   UNIQUE KEY `access_token_field__uuid__value` (`uuid`),   KEY `access_token_field__user_id__target_id` (`user_id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='The base table for access_token entities.' AUTO_INCREMENT=2;

上記のようにテーブルに記載してある「COLLATE=utf8mb4_0900_ai_ci」の箇所を「COLLATE=utf8mb4_general_ci」に一括で置き換える必要がある。

mysql> CREATE DATABASE jimin_honban DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
Query OK, 1 row affected (0.01 sec)

ここからリストアしてdumpするとCOLLATE=utf8mb4_general_ciで出力される。