MySQL 8.0
phpMyAdmin
我在MySQL中有以下Session变量(在
peformance_schema.session_variables
中找到):
collation_connection utf8mb4_0900_ai_ci
collation_database utf8mb3_general_ci
collation_server utf8mb4_0900_ai_ci
这些与我的 Global 变量 (
performance_schema.global_variables
) 不同,我可以编辑它。
当我尝试更新
collation_database
变量时,出现错误:
UPDATE session_variables set collation_database = 'utf8mb4_0900_ai_ci'
//#1142 - UPDATE command denied to user 'root'@'localhost' for table 'session_variables'
令我惊讶的是,即使是 root 用户也没有权限更新它。我尝试重新启动 MySQL,认为会话被清除,然后简单地复制下一个会话的全局变量,但这也不起作用。如何更新这些会话变量?
也许这是 phpMyAdmin 特有的问题?我不知道。我的目标是将 MySQL 中的所有内容设置为 utf8mb4 字符集和 utf8mb4_0900_ai_ci 排序规则,正如 MySQL 8.0 所推荐的那样。
我也尝试了以下,但它没有做任何事情:
SET SESSION collation_database = 'utf8mb4_0900_ai_ci'
查询被执行,但没有任何反应,变量仍然是
utf8mb3_general_ci
。就好像 MySQL 忽略了查询。
set session collation_database = 'utf8mb4_0900_ai_ci';请注意,某些参数不能在会话级别更改。使用 set session/global 或修改参数文件。