DiscuzQ 在 MySQL 5.6 安装 Specified key was too long; max key length is 767 bytes
DiscuzQ吃瓜第一个坑,MySQL 5.6 下安装的时候出现索引长度 安装出错:
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long;
max key length is 767 bytes
(SQL: alter table `group_permission` add primary key `group_permission_group_id_permission_primary`(`group_id`, `permission`))
那么在 MySQL 5.6 下要有没有办法安装呢? 其实是有的,如果熟悉 Laravel 的,都知道 Laravel 5.x 开始,在 MySQL 5.6 下也有这个问题,解决方式在AppServiceProvider::boot() 里面加上 Schema::defaultStringLength(191); 就可以解决问题了。
DiscuzQ 也是基于 Laravel 的,那么搞起。
结果发现,不行报错了:Call to a member function connection() on null
,看了是 DiscuzQ 没有完全使用 Laravel 的机制啊。
继续去跟安装方法,找到:app/Install/Controller/InstallController.php
文件,里面有一个函数, installDatabase
先进行数据库初始化和连接。后面才行执行数据表迁移。
那么可以在这个位置加上defaultStringLength
,修改方式如下: