Mysql 连接报错 Table ‘performance_schema.session_variables‘ doesn‘t exist

本文介绍了如何解决MySQL创建数据库 accessor 时遇到的 'performance_schema.session_variables' 表不存在的错误,提供了两种解决方法:一是使用 root 账号设置 show_compatibility_56 参数,二是通过升级操作并重启 MySQL 服务。

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

一. 报错信息


2022-02-23 10:58:56,849 [4126] - ERROR [main:DBAccessorImpl@117] - Error while creating database accessor
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'performance_schema.session_variables' doesn't exist
	at sun.reflect.GeneratedConstructorAccessor38.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
	at com.mysql.jdbc.Util.getInstance(Util.java:386)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4187)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4119)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2814)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2763)
	at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1614)
	at com.mysql.jdbc.ConnectionImpl.loadServerVariables(ConnectionImpl.java:4184)
	at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3587)
	at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2536)
	at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2306)


二. 解决方式

2.1. (有效)使用root账号登录, 设置一个参数就可以了.

mysql -u xxx -p
mysql> set @@global.show_compatibility_56=ON;

2.2. (风险) 执行升级操作.

  1. 以管理员的身份运行:

mysql_upgrade -u root -p –force

  1. 重启mysql即可.

systemctl restart mysqld
------- 或者-------
service mysqld restart

### 关于 Navicat 中 `performance_schema.session_variables` 表的相关信息 #### 错误背景 当使用 Navicat 连接MySQL 数据库时,如果遇到错误提示 “1146 - Tableperformance_schema.session_variablesdoesn’t exist”,通常是因为该表不存在或未被正确初始化。此问题可能源于 MySQL 版本升级过程中某些元数据表未能同步更新[^3]。 #### `performance_schema.session_variables` 表的作用 `performance_schema.session_variables` 是 MySQL 性能监控子系统的一部分,用于存储当前会话级别的变量状态。它记录了每个线程(session)的系统变量值,帮助管理员分析不同会话下的配置差异以及性能调优所需的信息[^2]。 | 字段名 | 类型 | 描述 | |-------------------|--------------|----------------------------------------------------------------------| | VARIABLE_NAME | VARCHAR(64) | 变量名称 | | VARIABLE_VALUE | VARCHAR(1024)| 当前会话下对应的变量值 | 注意:上述字段定义基于标准实现,具体版本可能存在细微差别。若表缺失,则需重新构建或修复环境。 --- #### 如何解决表丢失的问题? 以下是几种常见解决方案: 1. **确认权限** 确保登录账户具有足够的权限访问 `performance_schema` 下的所有对象。可以通过以下 SQL 查询验证: ```sql SHOW GRANTS FOR 'your_user'@'host'; ``` 2. **运行升级工具** 如果是从较低版本(如 5.6)迁移到较高版本(如 5.7),建议执行官方提供的升级脚本来重建必要的元数据表: 打开命令行并切换至 MySQL 安装目录中的 bin 文件夹,随后运行以下指令: ```bash mysql_upgrade -u root -p --force ``` 输入密码后等待完成即可[^5]。 3. **手动创建表** 若以上方法不可用,可尝试从其他正常实例导出对应 DDL 并导入目标服务器中。例如: ```sql CREATE TABLE IF NOT EXISTS performance_schema.session_variables ( VARIABLE_NAME VARCHAR(64), VARIABLE_VALUE VARCHAR(1024) ) ENGINE=PERFORMANCE_SCHEMA; ``` 4. **重启服务** 部分情况下仅需停止再启动 MySQL 服务便可恢复异常状况: ```bash net stop MySQL net start MySQL ``` --- #### 测试连接成功后的操作 一旦解决了表缺失问题,在 Navicat 中可以正常使用如下功能: - 查看实时 session 参数设置; - 对比多线程间的行为特征; - 导入/导出涉及此类敏感数据的内容而无需担心报错中断流程等问题发生。 ```sql SELECT * FROM performance_schema.session_variables WHERE VARIABLE_NAME LIKE '%timeout%'; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值