运行ROR应用程序时出现Sqlite-3错误

时间:2010-06-07 06:52:08

标签: sqlite sqlite3-ruby

当我尝试运行Ruby on Rails应用程序时......我面临以下错误

符号查找错误:/home/user/.rvm/gems/ruby-1.9.2-preview3/gems/sqlite3-ruby-1.3.0/lib/sqlite3/sqlite3_native.so:undefined symbol:sqlite3_initialize

我完全不知道这个错误是什么。任何人都可以帮帮我......

4 个答案:

答案 0 :(得分: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配置设置为忽略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'

答案 1 :(得分:1)

如果你将gemfile锁定到sqlite3-ruby,你将在最近的Rails版本上启动应用程序时遇到问题,因为Rails希望将gem命名为“sqlite3”。这个问题的真正解决方案是确保gem创建的.bundle文件确实链接到正确的sqlite3库。

默认情况下,sqlite3 gem将链接到/ usr / lib中的一个不存在的库。这个不对。你需要做的是直接为你的系统设置compliation选项并重新安装sqlite3 gem,你可以使用

轻松完成
$bundle config

他们的联机帮助页指定了它的作用,但这是我需要做的命令(我从他们的站点安装了自己的SQLite,而不是通过brew或macports。)

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

当您尝试“捆绑安装”它并且您的宝石将正确构建时,这将始终为gem提供正确的选项。

请注意,这个问题有点偷偷摸摸,因为它不会发生在Ruby 1.9上 - 显然rbconfig已经更新并且做了更好的库查找。但是当你想要1.8兼容性时 - 使用这个捆绑配置,你就可以了。

答案 2 :(得分: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控制台问题。

但是,我仍然没有让这个应用程序在乘客中启动,我还在努力。

答案 3 :(得分:0)

Ruby Enterprise Edition自动安装sqlite3 gem,而1.3.0似乎是问题所在。

如果您的Rails应用程序不需要sqlite3,请尝试卸载gem并重新启动应用程序。

sudo gem uninstall sqlite3