当前位置: 首页 > 知识库问答 >
问题:

在MySQL连接上设置字符集不工作

督瑞
2023-03-14

我试图在MySQL上设置一个非常简单的会话连接变量,但它没有任何作用。下面运行的查询不会导致任何错误,但不会更改MySQL连接的字符集。如果我在my.ini文件中将“collation\u server”和“character\u set\u 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语句没有影响。

共有2个答案

陈成济
2023-03-14

您正在为会话设置字符集(非全局)。尝试

SHOW SESSION VARIABLES WHERE ...

请注意,使用PDO可以将字符集设置为DSN的一部分:

$pdo = new \PDO("mysql:host=localhost;charset=utf8mb4", "root", "");
昝卓
2023-03-14

您必须使用SHOW SESSION VARIABLES查看更改,而不是SHOW GLOBAL VARIABLES

设置名称不会更改全局变量。它仅更改当前会话的字符集变量。

https://dev.mysql.com/doc/refman/5.7/en/charset-connection.html 说:

SET NAMES“charset_name”语句相当于以下三条语句:

SET character_set_client = charset_name;
SET character_set_results = charset_name;
SET character_set_connection = charset_name;

这些语句仅更改会话变量。

 类似资料:
  • 编辑:完整的脚本现在只有两行。在我改变了jdk之后,它曾经工作过并且停止了工作。 无法连接字符串(完整脚本) 输出 棒极了。lang.MissingMethodException:没有方法的签名: 脚本1。hello()适用于参数类型:(java.lang.String) 值:[,]可能的解决方案: getAt(java.lang.字符串),睡眠(长), 每个(groovy.lang.Closur

  • 我正在浏览Kafka连接,我试图得到一些概念。 假设我有kafka集群(节点k1、k2和k3)设置并且正在运行,现在我想在不同的节点上运行kafka连接工作器,比如分布式模式下的c1和c2。 很少有问题。 1) 要在分布式模式下运行或启动kafka connect,我需要使用命令,这在kaffa集群节点中可用,所以我需要从任何一个kafka集群节点启动kafka连接?或者我启动kafka conn

  • 我的变更集如下所示 我已经使用插件将liquibase与集成在一起 当我运行时,它会创建表,类似于

  • 问题内容: 我有一个计划不佳的数据库,该数据库在诸如“ 1、2、5、10”之类的文本列中有一个ID集。我需要得到以相同方式设置的两列的交集。我不喜欢使用PHP或其他脚本语言来执行此操作,我也不喜欢MySQL自定义函数。有什么办法可以得到逗号分隔字符串给定的两个集合的交集? 实际上,我不需要完整的交集,我只需要知道两组中是否存在相同的数字。如果是,我需要具有“ 1”,如果没有相同的数字,则需要具有“

  • 我正在尝试连接到我的数据库,但它显示了mysql_connect函数中的错误。 错误是:致命错误:未捕获错误:调用C:\xampp\htdocs\connect中未定义的函数mysql\u connect()。php:12堆栈跟踪:#0 C:\xampp\htdocs\Test。php(3):在C:\xampp\htdocs\Connect中抛出require()#1{main}。php在线12

  • 是否有其他方法可以为JBoss上的XA连接设置集成安全性,或者在设置xa-datasource-property时告诉它发送一个布尔值? 要再现此行为: a)在JBoss AS配置\standalone\standalone.xml中,向JNDI添加一个新的xa-datasource: 执行此代码将导致一个异常,该异常指出: