解決 Lumen 中 client charset is not supported

田園百曉生發表於2019-12-26

重現環境

資料庫:mysql8
php:php7.3.11
php框架:lumen

問題描述

在如上環境中,執行sql報錯
Next Illuminate\Database\QueryException: SQLSTATE[HY000] [1045] client charset is not supported

解決方案

修改vendor\illuminate\database\Connectors\MySqlConnector.php檔案的getHostDsn方法,加入對charset的處理,

protected function getHostDsn(array $config)
    {
        extract($config, EXTR_SKIP);

        $dsn = isset($port)
            ? "mysql:host={$host};port={$port};dbname={$database}"
            : "mysql:host={$host};dbname={$database}";

        if (isset($charset)) {
            $dsn .= ";charset={$charset}";
        }
        return $dsn;
    }

解決思路

  1. 寫了一個測試檔案連線資料庫,發現沒問題。
  2. 檢視原始碼發現,報錯在createConnection的時候,但框架中設定charset在其後。

相關文章