DEV Community

Peter Thaleikis 🍪
Peter Thaleikis 🍪

Posted on • Originally published at peterthaleikis.com

1 1

Laravel: Specified key was too long; max key length is 767 bytes

The Problem: "Specified key was too long; max key length is 767 bytes"

One of these issues you might stumble across using the PHP framework Laravel is this one:

Specified key was too long; max key length is 767 bytes
Enter fullscreen mode Exit fullscreen mode

After some research, I've found out it's coming up when using older versions of MySQL (prior to 5.7.8) or MariaDB (prior to 10.2.2). It was MariaDB in my case.

Solution #1:

In Laravel this can be resolved simply by changing your app service provider configuration (in app/Providers/AppServiceProvider.php) with the following:

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);
}
Enter fullscreen mode Exit fullscreen mode

After this you might need to rebuild your database using php artisan migrate:fresh --seed - this will completely reset your database and start off fresh.

Solution #2:

You can also upgrade your database server. This hasn't been discussed here as it is very system-specific. DuckDuckGo is your friend 💪️

AWS GenAI LIVE image

Real challenges. Real solutions. Real talk.

From technical discussions to philosophical debates, AWS and AWS Partners examine the impact and evolution of gen AI.

Learn more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs