問題:「指定されたキーが長すぎました。最大キー長は767バイトです」
PHPフレームワークLaravelを使用して遭遇する可能性のあるこれらの問題の1つは、次のとおりです。
Specified key was too long; max key length is 767 bytes
いくつかの調査の結果、古いバージョンのMySQL(5.7.8より前)またはMariaDB(10.2.2より前)を使用すると、この問題が発生することがわかりました。私の場合はMariaDBでした。
ソリューション#1:
Laravelでは、これはアプリサービスプロバイダーの構成を変更するだけで解決できます(app/Providers/AppServiceProvider.php
)次のように:
use Illuminate\Support\Facades\Schema;
public function boot()
{
/**
* Ensure we aren't running into `Specified key was too long; max key length is 767 bytes`
*
* @see https://peterthaleikis.com/posts/laravel:-specified-key-was-too-long-max-key-length-is-767-bytes/
**/
Schema::defaultStringLength(191);
}
この後、php artisan migrate:fresh --seed
を使用してデータベースを再構築する必要がある場合があります -これにより、データベースが完全にリセットされ、最初からやり直しになります。
ソリューション#2:
データベースサーバーをアップグレードすることもできます。これは非常にシステム固有であるため、ここでは説明していません。 DuckDuckGoはあなたの友達です💪️