如何让XAMPP的MySQL和Ruby on Rails在我的Mac上协同工作?

Nor*_*ald 8 mysql xampp macos rubygems ruby-on-rails

我在我的Mac机器上运行XAMPP的mysql和apache(10.6.4).我通常使用此设置进行PHP开发,但
现在我想从Ruby on Rails开始.

不幸的是我无法让mysql与RoR一起工作.我用XAMPP启动mysql服务器,当我执行"rake db:migrate"时,我得到了这个输出:

!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql.
rake aborted!
no such file to load -- mysql
Run Code Online (Sandbox Code Playgroud)

MySQL是位于/ Applications/XAMPP/xamppfiles/bin和mysql的SOCKET是/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock

因此我的database.yml文件如下所示:

development:
  adapter: mysql
  database: dbname
  username: dbuser
  password: dbpw
  socket: /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
Run Code Online (Sandbox Code Playgroud)

我不认为我需要做一个"宝石安装mysql"因为MySQL已经与XAMPP运行.无论如何我试过但它也失败了:

ERROR:  Error installing mysql:
  ERROR: Failed to build gem native extension.
Run Code Online (Sandbox Code Playgroud)

tom*_*hel 8

您需要告诉gem安装程序使用XAMPP安装的mysql文件的路径

sudo env ARCHFLAGS="-arch i386" gem install mysql -- --with-mysql-dir=/Applications/XAMPP/xamppfiles/lib/mysql --with-mysql-lib=/Applications/XAMPP/xamppfiles/lib/mysql/ --with-mysql-include=/Applications/XAMPP/xamppfiles/include/mysql/
Run Code Online (Sandbox Code Playgroud)

还要将正确的套接字添加到database.yml:

development:
  adapter: mysql2
  encoding: utf8
  database: your_db
  pool: 5
  username: root
  password:
  socket: /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
Run Code Online (Sandbox Code Playgroud)

之后,bundle再次运行rails项目,它应该工作.


War*_*ren 0

我认为你走在正确的道路上。您确实需要 mysql gem,因为它提供了与 mysql 对话所需的文件。它不安装mysql数据库引擎。

至于为什么 mysql gem 安装失败,我唯一能想到的是权限问题,但我认为当您运行“gem install mysql”时,输出中会指出这一点。您可以尝试将 --backtrace 添加到安装命令中,看看是否提供了有关失败原因的更多信息。