既存のカラムのCHARACTER SETを全部utf8mb4に変更する

utf8 → utf8mb4 とか! 既存のフィールドが100とかあったりするとちまちまやってられないのでsqlを生成する。

まずこうして

ALTER DATABASE hogedb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

それから

mysqldump -d hogedb |grep -E ' CHARACTER SET |CREATE TABLE'|sed \
  -e 's/CHARACTER SET utf8/CHARACTER SET utf8mb4/' \
  -e 's/  `/  MODIFY `/' \
  -e 's/CREATE TABLE/  DEFAULT CHARACTER SET utf8mb4;\nALTER TABLE/' \
  -e 's/($//' > alter.sql

すると

  DEFAULT CHARACTER SET utf8mb4;
ALTER TABLE `ofBookmark`
  DEFAULT CHARACTER SET utf8mb4;
ALTER TABLE `ofBookmarkPerm`
  MODIFY `name` varchar(255) CHARACTER SET utf8mb4 NOT NULL,
  DEFAULT CHARACTER SET utf8mb4;
ALTER TABLE `ofBookmarkProp`
  DEFAULT CHARACTER SET utf8mb4;
ALTER TABLE `ofConParticipant`
  MODIFY `bareJID` varchar(200) CHARACTER SET utf8mb4 NOT NULL,
  MODIFY `jidResource` varchar(100) CHARACTER SET utf8mb4 NOT NULL,
  MODIFY `nickname` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,

みたいなのが得られるので、それをいい感じに編集して実行するのじゃ