Error : 'incompatible library version' sqlite3-1.3.11 in rails

Error : 'incompatible library version' sqlite3-1.3.11 in rails

我在 Ubuntu 系统 (16.04) 上工作。

我的问题是每当我设置任何 rails 项目并尝试 运行 rails s 然后我得到 'incompatible library version' sqlite3 错误,如下所示。

/home/jiggs/.rvm/gems/ruby-2.3.1@albumriver/gems/activesupport-4.0.0/lib/active_support/values/time_zone.rb:282: warning: circular argument reference - now
/home/jiggs/.rvm/gems/ruby-2.3.1@albumriver/gems/sqlite3-1.3.11/lib/sqlite3.rb:6:in `require': incompatible library version - /home/jiggs/.rvm/gems/ruby-2.3.1@albumriver/gems/sqlite3-1.3.11/lib/sqlite3/sqlite3_native.so (LoadError)
    from /home/jiggs/.rvm/gems/ruby-2.3.1@albumriver/gems/sqlite3-1.3.11/lib/sqlite3.rb:6:in `rescue in <top (required)>'
    from /home/jiggs/.rvm/gems/ruby-2.3.1@albumriver/gems/sqlite3-1.3.11/lib/sqlite3.rb:2:in `<top (required)>'
    from /usr/lib/ruby/vendor_ruby/bundler/runtime.rb:77:in `require'
    from /usr/lib/ruby/vendor_ruby/bundler/runtime.rb:77:in `block (2 levels) in require'
    from /usr/lib/ruby/vendor_ruby/bundler/runtime.rb:72:in `each'
    from /usr/lib/ruby/vendor_ruby/bundler/runtime.rb:72:in `block in require'
    from /usr/lib/ruby/vendor_ruby/bundler/runtime.rb:61:in `each'
    from /usr/lib/ruby/vendor_ruby/bundler/runtime.rb:61:in `require'
    from /usr/lib/ruby/vendor_ruby/bundler.rb:99:in `require'
    from /home/jiggs/sites/albumriverfinal/config/application.rb:7:in `<top (required)>'
    from /home/jiggs/.rvm/gems/ruby-2.3.1@albumriver/gems/railties-4.0.0/lib/rails/commands.rb:76:in `require'
    from /home/jiggs/.rvm/gems/ruby-2.3.1@albumriver/gems/railties-4.0.0/lib/rails/commands.rb:76:in `block in <top (required)>'
    from /home/jiggs/.rvm/gems/ruby-2.3.1@albumriver/gems/railties-4.0.0/lib/rails/commands.rb:73:in `tap'
    from /home/jiggs/.rvm/gems/ruby-2.3.1@albumriver/gems/railties-4.0.0/lib/rails/commands.rb:73:in `<top (required)>'
    from bin/rails:4:in `require'
    from bin/rails:4:in `<main>'

Rails 版本:4.0.0

ruby 我用 rails 4.0.0 试过的版本:

我尝试使用 gem uninstall sqlite3 卸载 sqlite3 并尝试 运行 bundle install 但出现此错误:

An error occurred while installing sqlite3 (1.3.11), and Bundler cannot continue.
Make sure that `gem install sqlite3 -v '1.3.11'` succeeds before bundling.

然后我 运行 gem install sqlite3 -v '1.3.11' 和 运行 rails server 再次得到同样的错误 incompatible library version.

sqlite3的输出gem安装:

gem install sqlite3 -v '1.3.11'
Fetching: sqlite3-1.3.11.gem (100%)
Building native extensions.  This could take a while...
Successfully installed sqlite3-1.3.11
Parsing documentation for sqlite3-1.3.11
Installing ri documentation for sqlite3-1.3.11
Done installing documentation for sqlite3 after 1 seconds
1 gem installed

SQLite 库可能已损坏。尝试通过 运行 从命令提示符中执行以下命令来重新安装 gem:

gem uninstall sqlite3

然后运行:

bundle install

我已经将 ruby 版本回滚到 2.3.0 并且一切正常。这似乎是一个问题

对我来说回到 ruby 2.2.5p319 很有帮助。我刚刚意识到 Rails has to match to the one installed even though the RubyInstaller 版本附带的 Ruby 版本领先。

@Jiggs:我的系统更新到 16.04 时遇到了同样的问题。之后所有以前的应用程序都很难配置为抛出如此多的依赖错误,其中您的错误就是其中之一。

经过大量查找后,我得到的唯一结论是 RVM 上的问题,

如果您正在使用 RVM,请在您的 default gemset

中安装 Rails 5.0
rvm gemset use default
gem install rails -v=5.0 

安装 rails 5 后,所有兼容的依赖项都已安装。

现在转到您的任何项目创建新的 GEMSET(请不要使用以前的)。

rvm gemset create my_new_gemset
rvm gemset use my_new_gemset

最后做 bundle install

就我而言,在执行此操作后解决了您提到的所有错误。

我知道在默认 gemset 中安装 Rails-5 并使用新的 gemset 解决了这个问题有点奇怪。但不知何故它起作用了。

希望这对您有所帮助。

我来这里寻找答案,没有帮助我,但我找到了解决方案 ,(这似乎是 1.3.11 的问题,降级到 1.3.10 就成功了)