解决PHP连接Proxysql出现乱码的问题
2017/11/21
posted in
ProxySQL
2017/11/21
posted in
ProxySQL
PHP使用Laravel框架连接Proxysql有时会出现乱码。
这种问题的出现一般是在PHP初始化连接的时候并没有设置正确的字符集,而在连接建立后使用Prepare Statement的方式设置字符集导致的。
Proxysql本身支持设置字符集(如,SET NAMES utf8mb4),但是对于用Prepare Statement
设置字符集的方式支持的并不好,所以会导出出现乱码。
解决该问题可以参考一下两种方法:
在vendor/laravel/framework/src/Illuminate/Database/Connectors/MySqlConnector.php中将
protected function getHostDsn(array $config)
{
extract($config);
return isset($config['port'])
? "mysql:host={$host};port={$port};dbname={$database}"
: "mysql:host={$host};dbname={$database}";
}
修改为
protected function getHostDsn(array $config)
{
extract($config);
return isset($config['port'])
? "mysql:host={$host};port={$port};dbname={$database};charset=utf8mb4"
: "mysql:host={$host};dbname={$database};charset=utf8mb4";
}