2011-05-18 66 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天的時間進行調試和計算。

相關問題