簡體   English   中英

在Snow Leopard上安裝mysql gem的問題:未初始化的常量MysqlCompat :: MysqlRes

[英]Problem installing mysql gem on Snow Leopard: uninitialized constant MysqlCompat::MysqlRes

我在嘗試安裝Ruby mysql gem驅動程序時遇到了問題。

我最近升級到Snow Leopard並完成了MySQL的Hivelogic手動安裝。 這一切似乎工作正常,因為我可以從命令行訪問mysql並對數據庫進行更改。

我的問題是,如果我現在使用

rake db:migrate 

我明白了:

rake aborted!
uninitialized constant MysqlCompat::MysqlRes

(See full trace by running task with --trace)

現在看來我的mysql gem工作不正常,因為我可以使用Python驅動程序(我編譯到)從Python訪問MySQL。 因此,我嘗試使用以下來自此站點的命令重建gem: http//techliberty.blogspot.com/ ,(順便說一下,我使用的是最新的Intel MacBook Pro):

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

這個編譯雖然我得到沒有文檔的定義:

  Building native extensions.  This could take a while...
  Successfully installed mysql-2.8.1
  1 gem installed
  Installing ri documentation for mysql-2.8.1...

  No definition for next_result

  No definition for field_name
  ...

當我的mysql_config位於正確的位置時,我有點難過:

 /usr/local/mysql/bin/mysql_config

我從我的系統中刪除了mysql gem的所有其他實例。

任何建議將不勝感激。 非常感謝。

PS我看到這個上一篇文章未初始化的常量MysqlCompat :: MysqlRes(使用mms2r gem),但它似乎不適用於我的版本。

基本上問題是無法找到動態庫libmysqlclient。 上述解決方案可行,但您需要在重建gem時或安裝新版本的MySQL時重新應用它們。

另一種方法是將包含庫的MySQL目錄添加到動態加載路徑中。 將以下內容放在我的.bashrc文件中解決了這個問題:

export DYLD_LIBRARY_PATH="/usr/local/mysql/lib:$DYLD_LIBRARY_PATH"

好的,我終於解決了這個問題。

發生這種情況的原因是我安裝了兩個版本的Ruby。

  1. 在安裝Snow Leopard之前,我按照HiveLogic指南編譯並安裝了我自己的Ruby版本。
  2. 然后我升級到Snow Leopard(它擁有自己的Ruby版本)

這兩個版本沖突,意味着當我嘗試使用正確的ARCHFLAGS安裝MySQL gem時,系統認為我使用的是不同版本的Ruby。

修復很簡單:

  1. 刪除HiveLogic版本的Ruby( https://content.pivotal.io/blog/removing-old-ruby-source-installation-after-a-leopard-upgrade
  2. 使用正確的ARCHFLAGS重新編譯MySQL gem:

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

一旦我完成了這一切,一切正常。

經過幾天摔跤這個問題后,我終於把它釘了起來。 我做過的兩件事讓它發揮作用:

  1. sudo env ARCHFLAGS =“ - arch x86_64” gem install --no-rdoc --no-ri mysql - --with-mysql-config = / usr / local / mysql / bin / mysql_config
  2. export DYLD_LIBRARY_PATH =“/ usr / local / mysql / lib:$ DYLD_LIBRARY_PATH”

我有點驚訝#2只是史蒂文·錢寧提到的。

我使用Snow Leopard,並且只安裝了1個MySQL(x86_64)5.5和1個紅寶石(預裝了Snow Leopard)。

好吧,我是新手。 經過一段時間的努力,因為以上都沒有為我工作,我認為問題是由於我的“mysql”是64位安裝而ruby是32位。 檢查這些命令

file `which mysql`
file `which ruby`

兩者都應匹配Mach-O 64位可執行x86_64或Mach-O 64位可執行i386。 我安裝了一個32位的mysql,從源代碼和rails中重新安裝了ruby,從那以后一直運行得很完美。 我在Leopard順便說一下。

我已經應用了hivelogic post的說明,但是使用了MySQL 5.1.41版。 對於寶石安裝我做了兩件事:

sudo gem uninstall mysql
sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

事情對我很有用。

同樣的問題也在這里; 已經和我一起摔跤了兩個多星期!

我不是ROR專家,但是從其他知識淵博的人那里找到解決方案,問題似乎指向Ruby Gem for mysql,顯然,它錯誤地安裝在Mac上。

我將繼續在Ruby Forge網站上進行調查,看看是否有任何Ruby Gem大師可以糾正這個可怕的bug ....我需要我的Rails工作! 時間就是金錢!

所以我在RubyForge Mysql開發人員錯誤跟蹤頁面上報告了這個錯誤。

我當然希望他們可以提供幫助,因為這會削弱我目前的項目。

如果其他人可以在那里支持我的錯誤報告,也許會得到更多的關注; 請進來!

在解決問題之后,我也發現問題與安裝了相同mysql gem版本的多個二進制文件有關。 以下為我修好了。

gem uninstall mysql
Select gem to uninstall:
 1. mysql-2.8.1
 2. mysql-2.8.1
 3. All versions
> 3

Successfully uninstalled mysql-2.8.1
Successfully uninstalled mysql-2.8.1

接下來,我在Snow Leopard機器上從源代碼重新編譯了mysql gem,並且全世界都在膨脹。

sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql-5.1.46-osx10.6-x86_64/bin/mysql_config

這可能是一個Mysql版本的問題。 您應該安裝最穩定的版本(MYSQL 5.1)。 請參閱我的博客文章: http//geryit.com/blog/2011/01/installing-mysql-with-rails-on-mac-os-x-snow-leopard/

如果您使用的是MySQL 5.5,那么這些步驟可以幫助我們:

安裝mysql-2.8.1的命令:

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

使mysql-2.8.1與mysql 5.5一起工作的命令:

sudo ln -s ../mysql/lib/libmysqlclient.16.dylib libmysqlclient.16.dylib

希望有所幫助!

您可能會按照上述說明操作但忘記在重新安裝Mysql之前終止服務器。 這不會使錯誤消息消失。 這發生在我身上。

在嘗試了所有不同的選項后,我嘗試了以下方法:

ps aux | grep'mysql'

殺[pid_number_for_mysql]

基本上,殺死服務器..艱難的方式。 然后,重新啟動服務器。

我努力工作讓最后一天得到解決,我終於明白了。 我正在運行雪豹,並做了一個新的rails和mysql安裝。 我使用它的唯一方法是從dmg(而不是macports)安裝64位版本的mysql,並在啟動時按住“6”和“4”鍵以64位模式重啟我的機器。 然后我安裝了gem,將我的數據庫主機設置為本地,它就像一個冠軍。

有些問題與過時的或多個沖突的紅寶石和寶石二進制文件有關。 我自己有問題要“透明地”使用系統ruby編譯mysql gem,同時嘗試使用ruby 1.9運行我的代碼。 通過這個線程找出問題之后,一切進展順利。

為了避免這些問題和記錄,RVM工具包可能非常方便: http//rvm.beginrescueend.com 它有助於正確管理多個ruby版本,並且巧妙地管理所有版本的gem,而無需為每個版本保留副本。

似乎使用RVM可以幫助避免此線程中的幾個問題。

如果有人使用rvm與ruby 1.8.7和mysql x86(32位版本)並有此問題。 您會發現此鏈接很有用: http//rvm.beginrescueend.com/integration/databases/ 您將需要在x86_64版本中安裝mysql,然后安裝mysql gem並將archflags設置為x86_64。 原因是即使您嘗試將gem安裝為x86以匹配您的mysql x86。 但是ruby版本是64位。 所以你真的需要三個匹配:Ruby,mysql和mysql gem。 所以更簡單的方法是將它們全部放在64位中。

非常快速的修復我。

這個問題本周再次出現在我不習慣的開發機器上。 根據emson初始響應的第2步,它只需要使用正確的ARCHFLAGS重新編譯MySQL gem:

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

我有這個,或者至少是一個類似的問題(Hivelogic沒有參與,它不是升級,而是一個新系統)。 我同意這可能是64位問題。 我有一個鏈接給你,在我做了所有其他頭部和屁股刮傷之后,終於保存了我的屁股(和大腦)。

[http://forums.mysql.com/read.php?116,359591,359591]

祝你好運過這個配置BS並進行一些編碼。

經過長時間搜索解決這個特定問題,並嘗試了所有上述選項(以及許多其他網站上的選項)沒有運氣,我刪除了我的mysql-5.5安裝並安裝了mysql-5.1。 突然之間,有了上述幫助編譯64位版本,我終於設法安裝了一個有效的mysql gem。

因此,如果您遇到此問題並且正在運行mysql 5.5,請嘗試降級到mysql 5.1。

我遇到過同樣的問題。 我在/ usr / local / mysql / current /中安裝了mysql(在我的例子中,為Snow Leopard的5.1.48 64位),而不是在/ usr / local / mysql中。 但是,mysql客戶端分片庫(libmysqlclient.16.dylib)中嵌入了/usr/local/mysql/lib/libmysqlclient.16.dylib的路徑。

在幾次使用install_name_tool修復此問題的中斷嘗試后,有效的方法是更改​​共享庫中的路徑,如下所示,然后重建mysql 2.8.1 ruby​​gem,同時指定my:

# change the path embedded in libmysqlclient.dylib
sudo install_name_tool -change /usr/local/mysql/lib/libmysqlclient.16.dylib  /usr/local/mysql/current/lib/libmysqlclient.16.dylib /usr/local/mysql/current/lib/libmysqlclient.16.dylib

# reinstall the mysql gem
sudo ARCHFLAGS="-arch i386 -arch x86_64" gem install --no-rdoc --no-ri mysql -- --with-mysql-dir=/usr/local/mysql/current --with-mysql-config=/usr/local/mysql/current/bin/mysql_config

請注意,這是基於在/ usr / local / mysql / current中安裝了mysql,您需要編輯適合您系統的路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM