Ruby on Rails本地localhost无法启动,提示找不到performance_schema.session_variable
解决Rails本地环境无法访问+MySQL performance_schema缺失问题
一、先解决MySQL核心问题(报错根源在MySQL)
1. 确认MySQL服务状态
- 打开CMD,执行
mysql -u root -p,输入密码后尝试登录MySQL。如果连不上:- Windows:打开「服务」(Win+R输入
services.msc),找到MySQL服务,确认状态为「正在运行」,未运行则右键启动;或在CMD执行net start mysql(注意服务名可能是MySQL80这类,根据安装版本调整)。 - macOS/Linux:执行
brew services start mysql(brew安装的MySQL)或sudo systemctl start mysql。
- Windows:打开「服务」(Win+R输入
2. 检查并启用performance_schema
- 成功登录MySQL后,执行:
SHOW VARIABLES LIKE 'performance_schema'; - 如果结果为
OFF,需要开启:- 找到MySQL配置文件:Windows一般是
C:\Program Files\MySQL\MySQL Server X.X\my.ini,macOS/Linux为/etc/my.cnf或/usr/local/etc/my.cnf。 - 在
[mysqld]区块添加一行:performance_schema = ON。 - 重启MySQL服务,再次登录执行上述SQL,确认值为
ON。
- 找到MySQL配置文件:Windows一般是
3. 修复缺失的performance_schema表
- 若performance_schema已启用但仍提示表不存在,说明初始化不完整:
- 找到MySQL安装目录下的
performance_schema.sql脚本(Windows示例路径:C:\Program Files\MySQL\MySQL Server 8.0\share\performance_schema.sql,macOS/Linux一般在/usr/share/mysql/performance_schema.sql)。 - 登录MySQL后执行:
(替换为实际脚本路径,Windows注意用反斜杠或转义正斜杠)SOURCE /path/to/performance_schema.sql; - 执行完成后,检查表是否存在:
SHOW TABLES IN performance_schema LIKE 'session_variable';
- 找到MySQL安装目录下的
二、解决MySQL Workbench连接问题
- 连接时主机名用
127.0.0.1而非localhost(避免socket连接异常),端口保持默认3306。 - 关闭SSL选项:在Workbench连接设置中,找到「SSL」选项,选择「Use SSL: No」。
- 确认用户权限:登录MySQL后执行
SELECT user, host FROM mysql.user;,确保连接用户(如root)的host为localhost或%(允许所有地址连接)。若不是,执行:ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码'; FLUSH PRIVILEGES;
三、配置Rails并启动服务
- 打开Rails项目的
config/database.yml,确认配置正确:development: adapter: mysql2 encoding: utf8mb4 database: 你的项目名_development username: root password: 你的MySQL密码 host: 127.0.0.1 port: 3306 - 执行数据库初始化命令:
rails db:create rails db:migrate - 重启Rails服务器:
rails s,随后访问localhost:3000。
关于performance_schema.session_variable的说明
这个表是MySQL自带的系统表,无需手动创建或获取,只要MySQL正确安装并启用performance_schema,系统会自动生成。
内容的提问来源于stack exchange,提问作者Abhijeet
相关产品推荐
相关产品推荐

