错误:rails中的’不兼容的库版本’sqlite3-1.3.11

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

我的问题是每当我设置任何rails项目并尝试运行rails s然后我得到’不兼容的库版本’错误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 ' from /home/jiggs/.rvm/gems/ruby-2.3.1@albumriver/gems/sqlite3-1.3.11/lib/sqlite3.rb:2:in `' 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 `' 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 ' 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 `' from bin/rails:4:in `require' from bin/rails:4:in `' 

Rails版本:4.0.0

我尝试使用rails 4.0.0的ruby版本:

  • ruby-2.0.0-p247 [x86_64]

  • ruby-2.2.5 [x86_64]

  • ruby-2.3.0 [x86_64]

  • ruby-2.3.0-preview1 [x86_64]

  • ruby-2.3.1 [x86_64]

我尝试使用gem uninstall 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 install

 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库可能已损坏。 尝试通过命令pronpt运行以下命令重新安装gem:

 gem uninstall sqlite3 

然后运行:

 bundle install 

我已经将ruby版本回滚到2.3.0并且都工作了。这似乎是一个问题

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

经过大量的发现只得出结论我得到的问题是在RVM上,

如果您使用的是RVM,请在您的default gemset中安装Rails 5.0

 rvm gemset use default gem install rails -v=5.0 

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

现在转到你的任何项目CREATE New GEMSET(请不要使用之前的)。

 rvm gemset create my_new_gemset rvm gemset use my_new_gemset 

最后做bundle install

在我的情况下,这样做解决了你提到的所有错误。

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

希望这会帮助你。

对于我回到ruby2.2.5p319帮助。 我只是意识到Rails附带的Ruby版本必须与安装的版本相匹配,即使RubyInstaller版本领先。

我来这里寻找答案,没有帮助我,但我在这里找到了一个解决方案,(这似乎是1.3.11的问题,降级到1.3.10诀窍)