Skip to content

Instantly share code, notes, and snippets.

@mindmergedesign
Created May 30, 2017 13:09
Show Gist options
  • Select an option

  • Save mindmergedesign/74a9261a700be2ca53a59e30f83dcf6e to your computer and use it in GitHub Desktop.

Select an option

Save mindmergedesign/74a9261a700be2ca53a59e30f83dcf6e to your computer and use it in GitHub Desktop.
Laravel 5.4: Specified key was too long error
// AppServiceProvider.php
use Illuminate\Support\Facades\Schema;
public function boot()
{
Schema::defaultStringLength(191);
}
@mindmergedesign
Copy link
Copy Markdown
Author

Laravel 5.4 made a change to the default database character set, and it’s now utf8mb4 which includes support for storing emojis. This only affects new applications and as long as you are running MySQL v5.7.7 and higher you do not need to do anything.

For those running MariaDB or older versions of MySQL you may hit this error when trying to run migrations:

[Illuminate\Database\QueryException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table users add unique users_email_unique(email))

[PDOException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

As outlined in the Migrations guide to fix this all you have to do is edit your AppServiceProvider.php file and inside the boot method set a default string length:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment