2017-02-08 3 views
0

Laravel 5.4을 배우려고합니다. 나는 명령 php artisan make:auth을 게시하고 php artisan migrate 다음과 같은 오류가 표시 얻을 명령을 게시하고 일부 데이터베이스 테이블은 greated하게되지 않는 한 :
make : auth 후 Laravel 마이그레이션 오류

[를 분명히 \ 데이터베이스 \의 QueryException]
SQLSTATE [42000] : 구문 오류 또는 액세스를 위반 : 1071 지정한 키 이 너무 깁니다. 최대 키 길이는 767 바이트 (SQL : users 고유 추가 변경 테이블 users_email_unique (email)) [PDOException]
SQLSTATE [42000] : 구문 오류 또는 액세스 위반 : 1071 너무 긴 키 지정; 최대 키 길이 내가 Persian Script Font을 가진 문자의 컨테이너로 일부 열을 사용할 필요가 있다는 사실에 관해서는 767 바이트

입니다 (다른 열은 영어, 스페인어 ... 문자를 포함), 나는 utf8_general_ci으로 MySQL 데이터베이스를 생성 데이터베이스의 인코딩 때문에 오류가 발생했다고 가정합니다. Laravel의 Auth 기능을 활용할 수 있도록 데이터베이스를 구축 할 때 character encoding을 사용하겠습니다. 대단히 감사드립니다.

+1

텍스트 콘텐츠에 이미지를 사용하지 마십시오. . –

+0

@Parantap Parashar : 내 실수에 대해 알려 주셔서 감사합니다. 나는 그것을 바로 잡았다. – Tower

답변

1

SHOW CREATE TABLE을 보자. 그러면 email의 정의를 볼 수있다.

한편, 나는 그것이

email VARCHAR(255) CHARACTER SET utf8mb4, 
INDEX(email) 

같은 이들 중 하나를 (각각의 단점이 있습니다) 수행이 포함 추측됩니다

  • 255 -> 191 (하지만 당신이하지 할 수 있도록 현재 이상 주소)
  • utf8mb4이 -> UTF8 (따라서 이모티콘과 일부 중국 문자)를 허용하지
  • INDEX (이메일 (20)()는 UNIQUE 또는경우, 이 아님이 옵션을 선택하십시오.
  • 더 큰 색인을 허용하도록 서버와 테이블을 재구성 할 수 있습니다 (5.6.3 이후). 5.7.7까지는 '기본값'이 아닙니다.
+0

가장 친애하는 선생님, 당신은 저를 도왔으며 끊임없이 변하는 Laravel과 모든 장단점을 통해 평생을 구했습니다. 나는'config/database '를주의 깊게 보았다.php'를 실행하고 ** utf8mb4 **에 대해 언급 한 것을 보았습니다. 그러므로'mysql' 설정에서'charset'과'collation'에서'mb4'를 삭제했습니다 ... 지금은 잘 작동하고 있습니다. 완전한 정보를 가지고있을뿐만 아니라 그것을 공유하고 도와 주셔서 다시 한 번 감사드립니다. – Tower

+0

@Tower - 오신 것을 환영합니다. 나는 '평판'에서 분명히 드러나 듯이 MySQL 질문에 대답하는 것을 즐긴다. 나는 Laravel에 대해 아무것도 알지 못한다. 내 팁 목록에 팁을 추가했습니다. http://mysql.rjweb.org/doc.php/charcoll –

+0

@ Rick.James : 특히 의견에 웹 주소를 넣어 주셔서 감사합니다. 페이지의 목록 농담 오른쪽에서 나는 생각을 많이 볼 수 있다고 생각합니다. 행운을 빌어 요. – Tower

1

Laravel 5.4는이 오류에서 documented 문제가 있습니다. 이이 문제로 실행하는 다른 사람에 대한

도 좋은 수정입니다 :

  1. 당신의 app\Provider\AppServiceProvider.php
  2. 변화를 열고 그것에 : 다시

    <?php 
    
    namespace App\Providers; 
    
    use Illuminate\Support\Facades\Schema; 
    use Illuminate\Support\ServiceProvider; 
    
    class AppServiceProvider extends ServiceProvider 
    { 
    /** 
    * Bootstrap any application services. 
    * 
    * @return void 
    */ 
    public function boot() 
    { 
    Schema::defaultStringLength(191); // 
    } 
    
    /** 
    * Register any application services. 
    * 
    * @return void 
    */ 
    public function register() 
    { 
    // 
    } 
    } 
    
  3. 실행 마이그레이션