使用MySQL创建Rails项目后无法启动服务器及执行命令求助
Rails使用MySQL创建项目后启动失败及Gemfile冲突问题
问题现象
- 用默认SQLite创建Rails项目时,
rails server可正常运行,能通过http://localhost:3000访问,数据库创建无异常。 - 用
rails new [filename] -d mysql创建项目后,执行rails server、rake db:create等命令均报错:dyld[75423]: missing symbol called zsh: abort rake db:createdyld[75560]: missing symbol called zsh: abort rails server - 手动在Gemfile添加
gem "mysql2"后,执行命令触发Gemfile解析错误:[!] There was an error parsing Gemfile: You cannot specify the same gem twice with different version requirements.You specified: mysql2 (~> 0.5.3) and mysql2 (>= 0). Bundler cannot continue.
解决步骤
1. 清理重复的mysql2 gem声明
用rails new -d mysql创建项目时,Rails已自动在Gemfile中添加了指定版本的mysql2(比如~> 0.5.3),无需手动重复添加。直接打开项目根目录的Gemfile,删除手动新增的gem "mysql2"行即可。
2. 重新安装适配本地MySQL的mysql2 gem
missing symbol called错误大多是mysql2 gem版本与本地MySQL版本不兼容导致的,按以下操作处理:
- 卸载已安装的mysql2:
gem uninstall mysql2 - 重新安装时指定适配版本(以MySQL 8.x为例,推荐安装0.5.5版本),并指定本地MySQL配置路径:
# Intel芯片Mac示例路径 gem install mysql2 -v 0.5.5 -- --with-mysql-config=/usr/local/mysql/bin/mysql_config # M1/M2芯片Mac示例路径(Homebrew安装的MySQL) gem install mysql2 -v 0.5.5 -- --with-mysql-config=/opt/homebrew/bin/mysql_config
3. 更新依赖并重新初始化数据库
- 执行bundle安装依赖:
bundle install - 重新创建数据库:
rails db:create - 启动服务器:
rails server
额外排查点
- 确认本地MySQL服务处于运行状态:
# Homebrew安装的MySQL,检查运行状态 brew services list | grep mysql # 若未运行则启动 brew services start mysql - 检查
config/database.yml中的用户名、密码是否与本地MySQL匹配,默认配置可能使用root用户且密码为空,若你的MySQL设置了密码,需手动修改该文件的password字段。
内容的提问来源于stack exchange,提问作者handandysome
相关产品推荐
相关产品推荐

