必须手动清除配置缓存才能使 laravel 数据库字符集(如 utf8mb4)变更生效,执行 php artisan config:clear 后需验证 config('database.connections.mysql.charset') 返回 utf8mb4,并重启 web 服务器。

修改 Laravel 数据库字符集(如 utf8mb4)后,配置文件中 database.php 或 .env 的 DB_CHARSET 变更可能不生效,因为配置缓存仍保留旧值,必须手动清除才能让新字符集设置被加载。
确认字符集已正确写入配置
打开 config/database.php,检查 'charset' 和 'collation' 是否已设为 'utf8mb4' 与 'utf8mb4_unicode_ci';若通过 .env 控制,则确保 DB_CHARSET=utf8mb4 和 DB_COLLATION=utf8mb4_unicode_ci 存在且无拼写错误。
【关键前提】 必须先完成配置修改并保存,否则后续清缓存无效。
清除配置缓存使字符集生效
执行命令:php artisan config:clear。
该命令会删除 bootstrap/cache/config.php 文件,强制 Laravel 下次请求时重新读取所有 config/*.php 文件——包括 database.php 中更新后的字符集设置。
⚠️ 注意:仅运行 php artisan cache:clear 无法刷新数据库连接参数,它只清理 Cache::put() 类型的应用缓存,不影响数据库驱动初始化。
验证字符集是否已加载
第一步:执行 php artisan tinker 进入交互环境。
第二步:输入 config('database.connections.mysql.charset') → 应返回 "utf8mb4";若仍返回 "utf8" 或 null,说明 config 缓存未清除干净或配置路径有误。
第三步:退出 tinker,重启 PHP-FPM 或 Web 服务器(如 Apache/Nginx),避免旧进程缓存残留连接。











