解决 Lumen 中 client charset is not supported
重现环境
数据库: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
在其后。
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: