3

我正在尝试将 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

有任何想法吗?

4

1 回答 1

1

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

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

您的 64 位 Ruby 安装正在尝试链接到 32 位 MySQL 库,但没有找到它正在寻找的内容。“未找到符号”错误通常表示架构不匹配。

我对您的建议是从包管理系统(例如 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 等)此外,您还可以获得其他实用程序(如 Ruby)的最新版本,而不是依赖操作系统附带的过时版本。

于 2016-01-22T18:43:19.527 回答