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)にインデックスを張ろうとすると発生するらしい。
検索するとたくさんヒットするので、よくある話みたいですね…
- https://stackoverflow.com/questions/43379717/how-to-enable-large-index-in-mariadb-10
- http://blog.kamipo.net/entry/2012/11/13/102024
上記諸先輩方に従って、下記を修正してリトライ。
/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';
一度中途半端に作成されているテーブルをすべてドロップしてからやり直し。
これでうまくいきました。