使用AMPPS中的MySQL与Rails配合使用

3

我正在尝试使用Ampps中的MySQL二进制文件与Rails配合使用,但是当我运行命令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

有什么想法吗?

file /Applications/AMPPS/mysql/bin/mysql 告诉你什么?符号未找到错误通常是由于架构不匹配引起的。 - miken32
你不想把我的答案标记为被采纳的原因是什么?难道它没有解决你的问题吗? - miken32
抱歉,我分配了积分,以为这就足够标记为接受了,我的错 :( - JohnnyAce
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)的最新版本,而不是依赖于随操作系统提供的过时版本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接