システム開発とデジタルマーケティング

MovableTypeインストール時にインデックス関連のエラーが発生したときの対処 (Specified key was too long; max key length is 767 bytes)

MovableType 6.3.7をインストールしたとき、インデックス作成時にエラーが発生したので対処した内容をメモします。
以下の環境で発生しました。

  • OS: Debian 9
  • Database: MariaDB 10 (DB Engine: Innodb)
  • WebServer: Apache 2.4
  • MovableType: 6.3.7

ブラウザからインストールウィザードを実行しているとき、最後のスキーマ作成の部分でエラーが発生してストップ。

Specified key was too long; max key length is 767 bytes

ちょっと調べてみると、UTF8のvarchar(255)にインデックスを張ろうとすると発生するらしい。
検索するとたくさんヒットするので、よくある話みたいですね…

上記諸先輩方に従って、下記を修正してリトライ。

/etc/mysql/mariadb.conf.d/50-server.cnf の[mysqld]の下の方に下記を追記。

innodb_file_format = Barracuda
innodb_file_per_table = 1
innodb_large_prefix

追記したらMariaDBを再起動。

/mt/lib/MT/ObjectDriver/DDL.pm の269行目を下記のように変更。

変更前: $table_ddl .= ') ';
変更後: $table_ddl .= ') ROW_FORMAT = DYNAMIC';

 

一度中途半端に作成されているテーブルをすべてドロップしてからやり直し。
これでうまくいきました。