在尝试安装 MovableType 7 的时候,一路顺利,到最后初始化数据库的时候,出现了一个错误。
Error during installation: failed to execute statement ALTER TABLE mt_ts_funcmap ADD CONSTRAINT mt_ts_funcmap_funcname UNIQUE (ts_funcmap_funcname): Specified key was too long; max key length is 767 bytes at lib/MT/Upgrade.pm line 839, line 1662.
如何修复这个错误?
简单而言就是修改数据库的 collection 参数。
MariaDB 10.1 的默认安装后,其数据库的默认 collection 是 utf8mb4_general_ci,偶尔在某些系统安装时会出现上面的错误情况。
最方便的办法,就是在安装 MovableType 7 之前,在添加数据库后,先把数据库的 collection 修改成 utf8_general_ci,修改的方法,有手工的,有使用 phpmyadmin,都可以。
如果你在网上搜索,Specified key was too long; max key length is 767 bytes,有很多种解释和所谓解决方法。比如 innodb_file_format,innodb_file_per_table,row_format, innodb_large_prefix 各种参数修改。对于 MovableType 7 的安装来说,都没有效果,唯有上面修改 collection 才是真正解决的方法。
安装 MovableType 7 成功后的界面是下面这样。
Update:
特地在 MovableType 6.3.7 的全新安装,当数据库的 collection 也是 utf8mb4_general_ci 时,同样在初始化数据库时出现下面错误。