Laravel在迁移数据库的时候抛出异常Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes
原因:utf8 => utf8mb4),从而使 email 字段索引长度超过了的默认限制长度.
而新版本 MysqL>= 5.7.7 默认打开了 innodb_large_prefix,使索引长度限制由 767bytes 增加到了 3072bytes. 所以不会导致迁移报错.
namespace App\Providers;
// 导入Schema类
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
// 在app/providers/AppServiceProvider.PHP中boot方法中加上
Schema::defaultStringLength(191);
}
}
查看配置文件是不是为开启
show variables like 'innodb_large_prefix'
如果是OFF那就需要去设置
set global innodb_large_prefix=ON
查看如果不是Barracuda
show variables like 'innodb_file_format'
设置
set global innodb_file_format=Barracudazh
注意这个设置只对innodb生效
如果你修给了以上配置那还是不可以的话就去查看一下MysqL的存储引擎是不是默认为Innodb如果不是修改下默认的存储引擎就可以了
修改my.ini文件如果是linux就是my.cnf
default-storage-engine=INNODB
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。