问题描述

在一台新的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


风雨兼程路,雨雪初霁时