Categorías
Laravel

Solucionar error Schema::defaultStringLength(191);

Si hemos configurado un nuevo proyecto en laravel y estamos haciendo la primera migración y nos aparece un error como el siguiente no os asustéis. A partir de laravel 5.4 y en versiones de MySQL inferiores a la 5.7 siempre os aparecerá el error.

Ejemplo del error:

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`))

Para solucionar esto tenemos que entrar en nuestro editor de código preferido y buscar el fichero AppServiceProvider.php.

Se encuentra en la siguiente ruta:

/app/Providers/AppServiceProvider.php

Dentro de este fichero debemos de añadir la siguiente linea dentro del método/functión «boot». La línea es:

Schema::defaultStringLength(191);

A parte, al principio del fichero tendremos que añadir también esta linea:

use Illuminate\Support\Facades\Schema;

Quedaría así:

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        Schema::defaultStringLength(191);
    }
}

Si intentas hacer otra vez la migración es posible que te de errores porque ya hay tablas creadas. Borralas y lanza de nuevo el comando de migración

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *