web-dev-qa-db-ja.com

Lumen5.6移行エラー指定されたキーが長すぎました最大キー長は767バイトです

私はLumen5.6とmysqlを使用しています。 「phpartisanmigrate」と入力すると、次のエラーが発生します。

SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was t  
oo long; max key length is 767 bytes (SQL: alter table `users` add unique `  
users_email_unique`(`email`))  

AppServiceProviderの「boot」メソッドに次のコードを挿入しました

Schema::defaultStringLength(191);

しかし、私は何の成功も達成しませんでした。

6
Babak no'doust

もう1つのステップが必要です

bootstrapフォルダーのapp.phpに移動し、この行のコメントを解除または変更します

// $app->register(App\Providers\AppServiceProvider::class);

このコードに

$app->register(App\Providers\AppServiceProvider::class);

良い一日を過ごしてください

9
ards
use Illuminate\Support\Facades\Schema; //AppServiceProvider.php

public function boot(){
Schema::defaultStringLength(191);
}

//rollback your migration or delete all table from database then migrate again.
7
Kuldeep Mishra

ファイルdatabase.phpの設定に移動し、編集します

'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',

'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
5
Leorent

やるべきことがいくつか必要です。私もこの問題に直面し、次の2つの手順に従って修正しました

  1. bootstrapディレクトリのapp.phpに移動し、この行のコメントを解除または変更します。

    _// $app->register(App\Providers\AppServiceProvider::class);
    _
  2. 次に、AppServiceProviderfileでboot() functionを定義する必要があります

    _    public function boot()
        {
           Schema::defaultStringLength(191);
        }
    _

その後、あなたは行ってもいいです!

4
Mr. Pyramid
  1. bootstrap/app.phpで、次の行のコメントを解除します。
$app->register(App\Providers\AppServiceProvider::class);
  1. app/AppServiceProvider.phpで、以下のパブリック関数をAppServiceProviderクラスに追加します。
public function boot()
  {
    Schema::defaultStringLength(191);
  }
2
Masih Jahangiri