
While working with Laravel and MySQL, you might run into an error during migrations like this one:
Illuminate\Database\QueryException
SQLSTATE[HY000]: General error: 1273 Unknown collation: 'utf8mb4_0900_ai_ci'
Why This Happens
The collation utf8mb4_0900_ai_ci
is introduced in MySQL 8.0. If you’re using an older version of MySQL (like 5.7 or earlier), it doesn’t recognize this collation, and Laravel throws this error during migrations or queries.
Laravel 10+ and Laravel 11 use this collation by default in their database config, assuming the database supports it.
How to Fix It
There are two common ways to fix this issue:
đź› Option 1: Downgrade the Collation in config/database.php
Open the config/database.php
file in your Laravel project.
Locate the mysql
connection settings and change the collation and charset like this:
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'your_db_name'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci', // Change this line
...
],
Then, clear the config cache:
php artisan config:clear
Now try running the migration again:
php artisan migrate
Option 2: Upgrade Your MySQL Server
If possible, upgrade your MySQL server to version 8.0 or higher, which fully supports utf8mb4_0900_ai_ci
.
This is ideal for production servers or when you need access to newer MySQL features.
This is a common issue when developing Laravel apps locally on XAMPP, WAMP, or older MySQL versions. Fortunately, a simple config change is usually all you need to get back on track.
Pro Tip: Always make sure your development and production environments use compatible database versions and configurations to avoid such surprises.