【问题标题】:phpmyadmin server variables and session valuesphpmyadmin 服务器变量和会话值
【发布时间】: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模式?更改您感兴趣的变量。

标签: mysql phpmyadmin utf8mb4 server-variables


【解决方案1】:

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

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

流程:

  • 服务器启动时,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
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-22
  • 1970-01-01
相关资源
最近更新 更多