MariaDB
 sql >> Database >  >> RDS >> MariaDB

Laravel:La chiave specificata era troppo lunga; la lunghezza massima della chiave è 767 byte

Il problema:"La chiave specificata era troppo lunga; la lunghezza massima della chiave è 767 byte"

Uno di questi problemi che potresti incontrare utilizzando il framework PHP Laravel è questo:

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

Dopo alcune ricerche, ho scoperto che viene fuori quando si utilizzano versioni precedenti di MySQL (prima della 5.7.8) o MariaDB (prima della 10.2.2). Era MariaDB nel mio caso.

Soluzione n. 1:

In Laravel questo può essere risolto semplicemente modificando la configurazione del provider di servizi dell'app (in app/Providers/AppServiceProvider.php ) con quanto segue:

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

Dopodiché potresti aver bisogno di ricostruire il tuo database usando php artisan migrate:fresh --seed - questo ripristinerà completamente il tuo database e ricomincerà da capo.

Soluzione n. 2:

Puoi anche aggiornare il tuo server di database. Questo non è stato discusso qui in quanto è molto specifico del sistema. DuckDuckGo è tuo amico 💪️