当我尝试运行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
我完全不知道这个错误是什么。任何人都可以帮帮我......
答案 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