2010-06-07 64 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兼容性时 - 使用这个捆绑包配置,你将全部设置好。