问题描述
在一台新的Windows机器上配置laravel开发环境,执行数据库迁移的时候提示key was too long,刚开始百度了一下说是mysql版本太低,需要5.7以上的版本,升级完版本之后,问题还是存在。
具体的提示信息如下:
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes (SQL: alter table `jobs` add index `jobs_queue_index`(`queue`))
解决方案
找到config/database.php
'connections' => [ 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'strict' => true, 'engine' => 'InnoDB ROW_FORMAT=DYNAMIC', ],
上面关于mysql的配置中,engine本来为null, 更改为'InnoDB ROW_FORMAT=DYNAMIC' 解决问题。 DYNAMIC 允许存储长键索引。
参考
Laravel migration: unique key is too long, even if specified
Comments | NOTHING