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

Laravel Sail CLI调用MySQL时如何传递字符集参数解决乱码?

解决Laravel Sail MySQL CLI UTF8MB4乱码及表格错位问题的简便方法

下面是几种比直接使用冗长docker exec命令更简便的方案:

方案1:修改Sail的MySQL容器默认配置

直接在项目根目录的docker-compose.yml中,给MySQL服务添加默认字符集参数,这样每次启动容器后,所有客户端连接都会自动使用utf8mb4:

services:
    mysql:
        image: 'mysql/mysql-server:8.0'
        # 添加以下command配置,覆盖或追加默认启动参数
        command: --default-character-set=utf8mb4 --collation-server=utf8mb4_unicode_ci
        # 保留原有其他配置(environment、ports、volumes等)

修改后执行sail down && sail up -d重启容器,之后直接使用sail mysql或sail artisan db连接时,非ASCII字符会正常显示,且表格不会错位。

方案2:添加Shell别名

把常用的docker exec命令封装成Shell别名,避免每次输入冗长命令:

  1. 打开你的Shell配置文件(比如Bash的~/.bashrc或Zsh的~/.zshrc)
  2. 添加以下别名(替换成你自己的容器名、数据库用户名、密码和库名):
alias sail-mysql='docker exec -it my-laravel-project-mysql-1 mysql -usail -ppassword project_db --default-character-set=utf8mb4'
  1. 执行source ~/.bashrc(或对应配置文件)使别名生效

之后只需在终端输入sail-mysql,就能直接进入带utf8mb4支持的MySQL CLI。

方案3:自定义Artisan命令

自己写一个简单的Artisan命令,封装连接逻辑,方便和Sail无缝配合:

  1. 生成新的Artisan命令:
sail artisan make:command MysqlConnect
  1. 编辑生成的app/Console/Commands/MysqlConnect.php文件:
<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

class MysqlConnect extends Command
{
    protected $signature = 'db:connect';
    protected $description = 'Connect to MySQL with utf8mb4 support';

    public function handle()
    {
        // 从配置文件读取数据库连接信息,避免硬编码
        $container = config('database.connections.mysql.host');
        $user = config('database.connections.mysql.username');
        $password = config('database.connections.mysql.password');
        $database = config('database.connections.mysql.database');

        // 执行docker exec命令进入MySQL CLI
        exec("docker exec -it {$container} mysql -u{$user} -p{$password} {$database} --default-character-set=utf8mb4");
    }
}
  1. 执行命令测试:
sail artisan db:connect

这个方法的好处是不用记住容器名或数据库信息,直接复用Laravel的配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 17:36:07