2011-05-18 65 views
3

我正在为我的Ruby on Rails 3.0.5应用程序Mac OS X 10.6解决MySQL问题。RoR3和MySQL错误:dyld:找不到符号:_mysql_init

我安装了MySQL 5.1版和我收到此错误:

dyld: lazy symbol binding failed: Symbol not found: _mysql_init 
    Referenced from: /Users/manny/.gem/ruby/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle 
    Expected in: flat namespace 

dyld: Symbol not found: _mysql_init 
    Referenced from: /Users/manny/.gem/ruby/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle 
    Expected in: flat namespace 

Trace/BPT trap 

我试图安装的MySQL V5.5,但仍然出现错误。我从.dmg安装了MySQL。

+1

你有没有试过重新安装'mysql2' gem? – tadman 2011-05-18 20:03:20

+0

谢谢tadman,它看起来我正在接下来呢,这个错误已经出来了。现在,如果我尝试使用rake --trace db:migrate,它应该创建数据库,但是我遇到了以下错误 - 请问您是否有一个想法,可能会再次出现问题 - http://pastebin.com/3eV9v21Z ?谢谢 – user1946705 2011-05-18 20:29:47

+0

这真的应该是一个单独的问题,但这不是一个有效的'.rake'文件。这是一个应该自行运行的shell命令。如果你想定义rake任务,通常它开始于'namespace'之类的东西。 – tadman 2011-05-18 21:13:56

回答

0

给下面一展身手......

# Use mysqldump to backup your databases to text files! 
# Stop the database server 
sudo rm /usr/local/mysql 
sudo rm -rf /usr/local/mysql* 
sudo rm -rf /Library/StartupItems/MySQLCOM 
sudo rm -rf /Library/PreferencePanes/My* 
edit /etc/hostconfig and remove the line MYSQLCOM=-YES- 
rm -rf ~/Library/PreferencePanes/My* 
sudo rm -rf /Library/Receipts/mysql* 
sudo rm -rf /Library/Receipts/MySQL* 

则...

# Install Homebrew if you have not got it. 
brew install mysql 
export ARCHFLAGS="-arch i386 -arch x86_64" gem install mysql -- --with-mysql dir=/usr/local \ --with-mysql-config=/usr/local/bin/mysql_config 

这是假设你的自制前缀是/ usr /本地

否则你总是可以download的所需的MySQL版本,安装并运行以下...

env ARCHFLAGS="-arch x86_64" gem install --no-rdoc --no-ri mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config 

请务必在你的bash中设置你的路径,并且不要在rails2 0.2.7中使用Rails。

+0

我不会删除OS X提供的MySQL版本,如果我是你的话。将它保留在那里真的没有什么坏处(除了额外的磁盘空间)。 – 2011-07-16 17:57:08

3

你不需要删除MySQL并重新安装它,我只是用下面的命令。这是非常简单的做你的终端,并将解决您的问题:

rvmsudo ARCHFLAGS="-arch x86_64" gem install mysql2 -- --with-mysql-config=/usr/local/mysql/bin/mysql_config --with-opt-lib=/usr/local/mysql/lib 

我希望这可能会帮助你解决的问题。

+0

这是正确的答案,无论您使用的是mysql2 gem还是mysql,它都能正常工作。它与64位和32位库不匹配。我还确保mysql服务器,客户端和连接器dmg是64位的,然后重新安装了gem。 – 2014-03-15 21:32:29

0

我尝试了很多在网上找到的解决方案。最后我决定以另一种方式做。原因是大多数解决方案都带有修复绑定问题的问题,这些问题可能与安装过程中的问题有关。只是一个授权问题。

首先删除了DBI和DBD/DBD ::从Perl库MySQL的文件和文件夹中的文件夹 :

/Library/Perl/5.16/darwin-thread-multi-2level 

之后,我通过sudo的开始氏族

sudo cpan 

在有我安装了第一个DBI,之后DBD :: mysql

install DBI 
install DBD::mysql 

而且所有的东西都是fi最后工作!希望这有助于某人。简单的解决方案。它花了我2天的时间进行调试和计算。

相关问题