As I Please

MTのいんすとーるの練習と、その他びぼうろく・・・

movabletype mysql5 から mysql8 へ

  • 投稿日:
  • by
  • Category:

そろそろ mysql5系列も終わりで、mysql8のほうがパフォーマンスが良いというので移行しようとしたが、単純にデータのバックアップ、restoreだと文字化けしてうまくいかない。webを探してみてもこれと行ってうまく行った例が無いような。table単位でこちょこちょ文字コードを直すとかやるなどあるが、それでもうまくいかない。
MT4のころから使ってきたのでmysqlも4,5とメジャー、マイナーバージョンアップしてきたが、最初はたしか 設定はutf8とはいえ、DB側とのやりとりはlatin1でほぼバイナリデータとして使ってきていたっぽい。
latin1のデータを良く見ると、中身はutf8データっぽいので、latin1 で mysqldump して mysql8にそのまま入れてがダメ、utf8で dumpして latin1,utf8でrestore してもダメ。

1年くらいこの問題を寝かしていたが、さすがにそろそろちゃんと解決しておかないとな、と思って試行錯誤。

結局、mysql5 からdumpしたデータに、

/*!40101 SET NAMES latin1 */;
というのが入っている(入っているが、ファイルの中身は utf8っぽい)ので、これを除去(grep -v)して、
これを mysql8 に流し込んだところ、どうもうまくいった。
phpmyadmin で見ても、mysql5では文字化け(だが、MTの管理画面、再構築後のコンテンツは文字化けしない)だったが、今度はちゃんと文字化けせずに表示される。かつ、管理画面も再構築後のコンテンツも特に問題ない。

長年ひっかかっていた文字化け問題、とりあえずこれで解決か。
次は、MT7から MT8にアップデートするか。

コメントする