错误: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诀窍)