mysql5.7 performance_schema.session_status' doesn't exist

本文记录了 MySQL 数据库升级到 5.7 版本时遇到的问题及解决办法。一是通过设置临时或永久参数解决兼容性问题;二是在执行 SQL 语句时 GROUP BY 不支持,经分析修改 my.ini 配置文件并重启服务解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记录一次数据库版本升级5.7遇到的问题

问题1:

'performance_schema.session_variables' doesn't exist
'performance_schema.session_status' doesn't exist

解决:

临时生效(重启后需要再次执行,不需要重启数据库)

set @@global.show_compatibility_56=ON;

永久生效(需重启数据库)

  1. [mysqld]
  2. show_compatibility_56 = ON
  3. performance_schema


问题2:

上面的问题解决后在后来的一次sql语句执行时发现,GROUP BY 不支持

分析:

SELECT VERSION(), @@sql_mode

发现 里面 有  ONLY_FULL_GROUP_BY

解决:

修改my.ini配置文件,增加以下配置,重启mysql服务

[mysqld]
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'



<think>嗯,用户遇到了MySQL升级到5.7.8-rc后出现的错误:“Table 'performance_schema.session_variables' doesn't exist”。首先,我需要确认这个问题的可能原因。根据引用[1]和[2],用户可能在升级过程中没有正确更新performance_schema数据库的结构。 接下来,我应该检查MySQL的升级步骤,特别是与performance_schema相关的部分。通常,升级后需要运行mysql_upgrade工具来更新系统表。如果用户没有执行这一步,可能会导致表结构不兼容,从而出现session_variables表不存在的错误。 另外,可能需要确认MySQL的版本是否确实升级成功,有时候升级过程中可能出现中断,导致部分文件未正确更新。用户需要验证版本号,并检查错误日志是否有其他线索。 解决方案方面,首先建议用户运行mysql_upgrade命令,这会自动修复系统表。如果问题仍然存在,可能需要手动重新初始化数据目录,或者检查权限问题,确保MySQL服务有权限访问performance_schema数据库。 此外,用户的问题可能与某些配置参数有关,比如是否禁用了performance_schema。需要检查my.cnf或my.ini文件中的配置,确保performance_schema=ON。如果被禁用,启用后重启服务应该会生成所需的表。 最后,考虑到用户可能对命令行操作不太熟悉,需要提供详细的步骤说明,并提醒备份数据的重要性,避免操作失误导致数据丢失。</think>### 解决MySQL performance_schema.session_variables表不存在的错误 #### 问题分析 该错误通常发生在MySQL版本升级后,尤其是从旧版本升级到5.7.x时。主要原因是`performance_schema`数据库的表结构未正确更新或初始化,导致`session_variables`表缺失[^1][^2]。 --- #### 逐步解决方案 1. **运行mysql_upgrade工具** - **作用**:该工具会自动检查并修复系统表的兼容性问题。 - **操作步骤**: ```bash # 停止MySQL服务 systemctl stop mysql # 运行升级命令(需使用root权限) mysql_upgrade -u root -p --force # 重新启动MySQL服务 systemctl start mysql ``` - **注意**:`--force`参数强制修复所有表,适用于升级后未正确初始化的场景。 2. **手动初始化数据目录** - **适用场景**:若`mysql_upgrade`无效,可能是数据目录损坏。 - **操作步骤**: ```bash # 备份原有数据(重要!) cp -r /var/lib/mysql /var/lib/mysql_backup # 删除旧数据目录(路径以实际配置为准) rm -rf /var/lib/mysql # 重新初始化MySQL mysqld --initialize --user=mysql # 启动服务 systemctl start mysql ``` 3. **验证performance_schema状态** - **检查是否启用**: ```sql SHOW VARIABLES LIKE 'performance_schema'; ``` - 若结果为`OFF`,需修改配置文件: ```ini # 编辑my.cnf或my.ini [mysqld] performance_schema=ON ``` - 重启服务生效: ```bash systemctl restart mysql ``` --- #### 关键注意事项 - **权限问题**:确保MySQL进程对`/var/lib/mysql`目录有读写权限。 - **版本兼容性**:确认升级后的版本是否支持`session_variables`表(5.7.x及以上支持)。 - **日志排查**:查看MySQL错误日志(默认路径`/var/log/mysql/error.log`)定位具体错误。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值