重現環境
資料庫: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;
}
解決思路
- 寫了一個測試檔案連線資料庫,發現沒問題。
- 檢視原始碼發現,報錯在
createConnection
的時候,但框架中設定charset
在其後。