phpmyadmin 服务器变量和会话值

Posted

技术标签:

【中文标题】phpmyadmin 服务器变量和会话值【英文标题】:phpmyadmin server variables and session values 【发布时间】:2017-03-13 09:55:08 【问题描述】:

我将使用utf8mb4。我的一些变量也必须是提到here的utf8mb4。我从 phpmyadmin Variables 菜单设置它们。但是 utf8mb4 的一些变化,但它的 会话值 仍然是 uft8

当我运行这个命令时:

SHOW VARIABLES WHERE Variable_name LIKE  'character\_set\_%' OR Variable_name LIKE  'collation%'

显示的是 utf8,不是 utf8mb4。有什么想法吗?

编辑:当我将 a 变量设置为 utf8 时,会话值消失。

【问题讨论】:

您可能设置了变量的全局版本,但没有设置会话版本。 @Shadow 但我无法编辑会话值。只是能够编辑变量。 是的,您可以使用set 语句。请参阅 mysql 手册中的文档。 @Shadow 我发现了这个语法:SET SESSION sql_mode = 'TRADITIONAL'; 但结果相同! 为什么要设置sql模式?更改您感兴趣的变量。 【参考方案1】:

要对这些或任何其他“变量”进行永久性更改:

    编辑my.cnf 重启服务器(mysqld) (显然)然后您需要重新登录。

流程:

服务器启动时,my.cnf 用于覆盖内置默认值;该组合变为GLOBAL VARIABLES。 连接时,使用全局变量初始化SESSION VARIABLES;这些由您的连接使用。 如果您执行SET,它只会修改您的会话变量。当连接关闭时,该值将丢失。

关于 utf8mb4 的另一个注意事项... 大多数客户端软件(php、phpmyadmin 等)都有设置连接的 CHARACTER SETCOLLATION 的方法。 是你应该确定“客户端中的字节是“UTF-8”编码的。(外界称之为UTF-8;MySQL称之为utf8mb4。)

更新:MySQL 8.0 有一个可选的方法来设置GLOBAL VARIABLES "persist",从而绕过第 2 步(重新启动)。

【讨论】:

谢谢。很好的描述。主要问题是我找不到my.cnf 文件。我在网上搜索了很多,但没有结果。 (我在 localhost 并使用 xampp) 在某处我看到这个文件应该在/etc/my.cnfetc 位于哪里? 什么操作系统?它可以被称为my.ini

以上是关于phpmyadmin 服务器变量和会话值的主要内容,如果未能解决你的问题,请参考以下文章

无法在 phpMyAdmin 中无错误地启动会话,会话变量不起作用

mysql全局变量和局部变量

MySQL高级 第一章——变量

如何从 phpmyadmin 引用值来区分用户和客户?

使用 gorilla 会话时未保存 golang 中的会话变量

Mysql变量简介