使用来自 AMPPS 的 MySQL 和 Rails

Use MySQL from AMPPS with Rails

我正在尝试将 Rails 与来自 Ampps 的 MySQL bin 一起使用,但是当我 运行 命令 rails generate scaffold User name:string email:string 时,我收到以下错误:

dyld: lazy symbol binding failed: Symbol not found: _mysql_server_init
Referenced from: /Users/myusername/.rvm/gems/ruby-2.2.1/gems/mysql2-0.4.2/lib/mysql2/mysql2.bundle
  Expected in: flat namespace

dyld: Symbol not found: _mysql_server_init
  Referenced from: /Users/myusername/.rvm/gems/ruby-2.2.1/gems/mysql2-0.4.2/lib/mysql2/mysql2.bundle
  Expected in: flat namespace

我已经为我的环境配置了 Ampps Mysql,但我无法让它与 rails 一起工作,我有以下配置。

$ which mysql                                          
/Applications/AMPPS/mysql/bin/mysql

$ echo $PATH
/Users/myusername/.rvm/gems/ruby-2.2.1/bin:/Users/myusername/.rvm/gems/ruby-2.2.1@global/bin:/Users/myusername/.rvm/rubies/ruby-2.2.1/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/myusername/.rvm/gems/ruby-2.2.1/bin:/Users/myusername/.rvm/gems/ruby-2.2.1@global/bin:/Users/myusername/.rvm/rubies/ruby-2.2.1/bin:/Applications/AMPPS/php-5.4/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/myusername/.rvm/bin:/Users/myusername/.rvm/bin:/Applications/AMPPS/mysql/bin

$ ls -l /usr/local/lib/libmy*.dylib 
lrwxr-xr-x  1 myusername  admin  53 Jan  1 19:30 /usr/local/lib/libmysqlclient.18.dylib -> /Applications/AMPPS/mysql/lib/libmysqlclient.18.dylib

我尝试执行命令但没有成功:

$ gem install mysql2 -- --with-mysql-lib=/Applications/AMPPS/mysql/lib --with-mysql-include=/Applications/AMPPS/mysql/include --with-mysql-config=/Applications/AMPPS/mysql/bin/mysql_config

bundle config build.mysql2 --with-mysql-lib=/Applications/AMPPS/mysql/lib --with-mysql-include=/Applications/AMPPS/mysql/include --with-mysql-config=/Applications/AMPPS/mysql/bin/mysql_config
bundle install

有什么想法吗?

我下载了这个 AMPPS 包并快速检查了 MySQL 二进制文件:

$ file /Volumes/AMPPS/AMPPS/mysql/bin/mysql
/Volumes/AMPPS/AMPPS/mysql/bin/mysql: Mach-O executable i386

您的 64 位 Ruby 安装正在尝试 link 到 32 位 MySQL 库,但没有找到它要查找的内容。 "Symbol not found" 错误通常表示体系结构不匹配。

我对您的建议是从包管理系统(例如 MacPorts 或 Homebrew)安装这些程序。我偏爱 MacPorts,所以我会为您提供相关说明。我觉得 Homebrew 比较流行,但我自己没用过。

  1. 安装 Xcode 和 Xcode 命令行工具
  2. 同意 Xcode 终端许可:sudo xcodebuild -license
  3. 安装 MacPorts:https://distfiles.macports.org/MacPorts/MacPorts-2.3.4-10.11-ElCapitan.pkg
  4. 更新端口列表:sudo port selfupdate
  5. 安装走:sudo port install mysql56 rb-rails rb-mysql
  6. 定期更新:sudo port selfupdate && sudo port -uc upgrade outdated

这样您就可以为您的系统正确构建二进制文件,您可以轻松地使它们保持最新状态,并且您不会用 2 GB 的东西填满您的系统,这些东西您不一定会使用( 5 个不同版本的 PHP、几个数据库服务器、Perl、Python 等)此外,您还可以获得 up-to-date 版本的其他实用程序,例如 Ruby,而不是而不是依赖操作系统附带的过时版本。