sql >> Base de Datos >  >> RDS >> MariaDB

Laravel:la clave especificada era demasiado larga; la longitud máxima de la clave es de 767 bytes

El problema:"La clave especificada era demasiado larga; la longitud máxima de la clave es de 767 bytes"

Uno de estos problemas con los que podría tropezar al usar el marco PHP Laravel es este:

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

Después de investigar un poco, descubrí que aparece cuando se usan versiones anteriores de MySQL (anteriores a la 5.7.8) o MariaDB (anteriores a la 10.2.2). Fue MariaDB en mi caso.

Solución #1:

En Laravel, esto se puede resolver simplemente cambiando la configuración de su proveedor de servicios de aplicaciones (en app/Providers/AppServiceProvider.php ) con lo siguiente:

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);
}

Después de esto, es posible que deba reconstruir su base de datos usando php artisan migrate:fresh --seed - esto restablecerá completamente su base de datos y comenzará de nuevo.

Solución #2:

También puede actualizar su servidor de base de datos. Esto no se ha discutido aquí ya que es muy específico del sistema. DuckDuckGo es tu amigo 💪️