我试图在 MySQL 上设置一个非常简单的会话连接变量,但它什么也没做。下面运行的查询不会导致任何错误,但不会更改 MySQL 连接的字符集。my.ini
如果我在文件中将'collation_server' 和 'character_set_server' 的默认值配置为utf8mb4
而不是latin1
,则字符集变为utf8mb4
,但我想知道为什么我不能从我的 PHP 脚本中更改连接字符集。
$pdo = new \PDO("mysql:host=localhost", "root", "");
$pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
$pdo->query("SET NAMES utf8mb4");
print_r($pdo->query("SHOW GLOBAL VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';")->fetchAll(PDO::FETCH_ASSOC));
此查询表明该SET NAMES
语句没有影响。