2017-04-01 4 views
0

입니다. 공통점은 에 Schema::defaultStringLength(191);을 추가하는 것입니다. 그러나 문서 https://laravel-news.com/laravel-5-4-key-too-long-error은 5.7.7보다 오래된 MySQL 버전을 대상으로합니다. 하지만 내 버전은 5.7.14 (mysql Ver 14.14 Distrib 5.7.14, for Win64 (x86_64)), 그리고 난 이미 utf8mb4하는 (show variables like "%char%"를) MySQL의 디폴트 캐릭터 세트를 설정합니다 Laravel 5.4 마이그레이션 키가 너무 깁니다 오류

enter image description here

그래서 내가 아무것도 변경할 필요가 없습니다하지만 난 여전히 문제를 얻을 생각합니다. 그것은 나를 혼란스럽게 만든다. 누가 날 도울 수 있죠? 감사.

+0

$table->engine = 'innodb row_format=dynamic';는 마이그레이션에 정의 된 독특한 복합 키가 있습니까? – dparoli

답변

0

나는 당신이 Oninnodb_large_prefix를 설정했는지 확인한다고 생각합니다. documentation에 따르면 Mysql> = 5.7.7에서 기본값이어야하지만 비표준 설정을 사용하는 것이 좋습니다.

1
  1. 설정 innodb_file_format=Barracuda
  2. 은 1 단계 (innodb_file_format) 및 2 (innodb_large_prefix)는 MariaDB를 포함한 이전의 MySQL의 버전에 작동 innodb_default_row_format=dynamic

innodb_large_prefix=1

  • 세트. 나는 이것들에 더 낮은 버전 경계를 모른다. 이 설정에 대해서는 Mysql 5.7.7 changed the defaults이지만 이전에 존재했습니다.

    3 단계 (innodb_default_row_format)는 MySQL의 5.7.9 이상을 필요로한다. 문서를 위해서

    ; innodb_default_row_format 설정이 누락 된 경우 해결 방법은 엔진 innodb row_format=dynamic을 사용하는 것입니다. 이렇게하면 Laravel이 이스케이프 처리없이 CREATE TABLE 문에이를 추가하여 결과적으로 ... ENGINE=innodb row_format=dynamic이됩니다. config/database.php에서

    Laravel 5.2.14 introduced the ability to specify the engine. 이전 버전을 사용하는 경우 테이블을 만드는 모든 마이그레이션에서이 값을 지정해야합니다.

  • 관련 문제