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:
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:
use IlluminateSupportFacadesSchema;
public function boot()
{
Schema::defaultStringLength(191);
}
After that everything should work as normal.
Please note that as per Andrew Koster's comment below it's possible this is only a solution intended for legacy code. You may wish to look into different solutions for up-to-date projects.