Ramesh Thapa

Sharing my personal opinion and notes

Specified key was too long error in Laravel

Specified key was too long error in Laravel

$ php artisan migrate
Migration table created successfully.


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

at D:\Webapps\htdocs\rameshlaraone\vendor\laravel\framework\src\Illuminate\Dat
660| // If an exception occurs when attempting to run a query, we’ll
format the error
661| // message to include the bindings with SQL, which will make th
is exception a
662| // lot more helpful to the developer instead of just the databa
se’s errors.
663| catch (Exception $e) {
> 664| throw new QueryException(
665| $query, $this->prepareBindings($bindings), $e
666| );
667| }

Exception trace:

1 PDOException::(“SQLSTATE[42000]: Syntax error or access violation: 1071 Sp
ecified key was too long; max key length is 767 bytes”)

2 PDOStatement::execute()

how to solve?

Go to AppServiceProvider.php and  inside the boot method set a default string length:

use Illuminate\Support\Facades\Schema;

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

In look at figure

Default AppServiceProvider is look this

Then you must change this like.

3 comments found

  1. Thanks for one’s marvelous posting! I quite enjoyed reading it, you will be a great author.I will always bookmark your blog and definitely will come back from now on. I want to encourage one to continue your great posts, have a nice day!

  2. At this time it sounds like Movable Type is the preferred blogging platform out there right now. (from what I’ve read) Is that what you are using on your blog?

  3. This is really interesting, You’re a very skilled blogger. I’ve joined your feed and look forward to seeking more of your wonderful post. Also, I have shared your site in my social networks!

Leave comment

Your email address will not be published. Required fields are marked with *.