You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 11执行php artisan migrate报错:未知排序规则utf8mb4_0900_ai_ci

解决Laravel 11迁移时「General error: 1273 Unknown collation: 'utf8mb4_0900_ai_ci'」错误

报错原因

utf8mb4_0900_ai_ci是MySQL 8.0及以上版本才支持的排序规则,你的MySQL版本低于8.0,而Laravel 11默认使用该规则,导致迁移时出现兼容性报错。

解决方案

方案一:升级MySQL版本

将MySQL升级到8.0及以上版本,直接匹配Laravel 11的默认配置要求。

方案二:修改Laravel数据库配置

调整数据库配置文件,使用低版本MySQL支持的排序规则:

  1. 打开项目根目录下的config/database.php
  2. 找到mysql配置块中的collation字段,将utf8mb4_0900_ai_ci替换为utf8mb4_unicode_ci或utf8mb4_general_ci(这两个规则兼容MySQL 5.7及以下版本)
  3. 确保charset字段保持为utf8mb4

修改后的示例代码:

'mysql' => [
    'driver' => 'mysql',
    'url' => env('DATABASE_URL'),
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
    'password' => env('DB_PASSWORD', ''),
    'unix_socket' => env('DB_SOCKET', ''),
    'charset' => 'utf8mb4',
    'collation' => 'utf8mb4_unicode_ci', // 替换为兼容的排序规则
    'prefix' => '',
    'prefix_indexes' => true,
    'strict' => true,
    'engine' => null,
    'options' => extension_loaded('pdo_mysql') ? array_filter([
        PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
    ]) : [],
],

方案三:通过.env文件覆盖默认规则

  1. 在项目根目录的.env文件中添加一行配置:DB_COLLATION=utf8mb4_unicode_ci
  2. 打开config/database.php,确保mysql配置块的collation字段读取环境变量:
'collation' => env('DB_COLLATION', 'utf8mb4_0900_ai_ci'),

这样.env中的配置会覆盖Laravel的默认排序规则。

执行完以上任意一种方案后,重新运行php artisan migrate即可完成迁移。

内容的提问来源于stack exchange,提问作者Davidos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 05:42:09