2010-06-07 62 views
4

當我嘗試on Rails應用程序運行Ruby ....我面臨着以下錯誤sqlite的-3的錯誤,同時運行RoR應用程序

符號查找錯誤:/home/user/.rvm/gems/ruby-1.9 .2-preview3/gems/sqlite3-ruby-1.3.0/lib/sqlite3/sqlite3_native.so:undefined symbol:sqlite3_initialize

我不知道最新的錯誤是什麼。任何一個可以請幫我這個......

回答

11

sqlite3-ruby升級到1.3.0後,今天早上我有同樣的問題。快速修復是卸載1.3.0並確保已安裝1.2.5:

gem uninstall sqlite3-ruby --version 1.3.0 
gem install sqlite3-ruby --version 1.2.5 

更好的選擇是將您的gem config設置爲忽略1.3.0。對於Rails的2.X,在config/environment.rb

config.gem 'sqlite3-ruby', :lib => 'sqlite3', :version => '!= 1.3.0' 

,或者如果你想讓它發揮它真正的安全,明確地拉1.2.5:

config.gem 'sqlite3-ruby', :lib => 'sqlite3', :version => '1.2.5' 
+0

謝謝傑森....它真的幫助我從心碎的錯誤出來.......... – palani 2010-06-09 10:02:04

0

我有同樣的問題我的Dreamhost的服務器上:

> bundle exec rails c 
ruby: symbol lookup error: /home/user/settings/installs/rubygems/gems/gems/sqlite3-ruby-1.3.0/lib/sqlite3/sqlite3_native.so: undefined symbol: sqlite3_initialize 

我手動下載並在我家目錄中安裝SQLite3,並添加LD_LIBRARY_PATH到我的.bashrc。這解決了Rails控制檯問題。

但是,我還沒有得到應用程序發射乘客,但我仍在努力。

0

Ruby Enterprise Edition自動安裝sqlite3的寶石,和1.3。 0似乎是問題所在。

如果您的Rails應用程序不需要sqlite3,請嘗試卸載該gem並重新啓動您的應用程序。

sudo gem uninstall sqlite3 
1

如果您鎖定的Gemfile到sqlite3的,紅寶石,因爲Rails的希望有一個名爲「sqlite3的」寶石,你將有最近的Rails版本開始您的應用程序的問題。這個問題的真正解決方案是確保gem創建的.bundle文件確實鏈接到正確的sqlite3庫。

默認情況下,sqlite3 gem將鏈接到/ usr/lib中的不存在的庫。這個不對。你需要做的是直接爲您的系統設置compliation選項並重新安裝sqlite3的寶石,你可以很容易地做到這一點使用

$bundle config 

他們的手冊頁指定它做什麼,但是這是我需要的命令(我從他們的網站上安裝了自己的SQLite安裝,而不是通過brew或macports)。

$bundle config build.sqlite3 --with-sqlite3-include=/usr/local/include --with-sqlite3-lib=/usr/local/lib 

當您嘗試「捆綁安裝」它並且您的寶石將正確構建時,它總是會將正確的選項提供給寶石。

請注意,這個問題有點鬼鬼祟祟,因爲它不會發生在Ruby 1.9上 - 顯然rbconfig已經更新並且可以更好地進行庫查找。但是當你打算1.8兼容性時 - 使用這個捆綁包配置,你將全部設置好。