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
ステートメントが影響を与えなかったことを示しています。