ruby on rails - 无法激活sqlite3(〜> 1.3.6),已经激活了sqlite3-1.4.0



ruby-on-rails (4)

我正在使用Ubuntu并在使用db:migrate for ruby​​项目时遇到问题。

rails aborted!
LoadError: Error loading the 'sqlite3' Active Record adapter. Missing a gem it depends on? can't activate sqlite3 (~> 1.3.6), already activated sqlite3-1.4.0. Make sure all dependencies are added to Gemfile.
/home/juan/odin_on_rails/RailsaAPP/bin/rails:9:in `<top (required)>'
/home/juan/odin_on_rails/RailsaAPP/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'

Caused by:
Gem::LoadError: can't activate sqlite3 (~> 1.3.6), already activated sqlite3-1.4.0. Make sure all dependencies are added to Gemfile.
/home/juan/odin_on_rails/RailsaAPP/bin/rails:9:in `<top (required)>'
/home/juan/odin_on_rails/RailsaAPP/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Tasks: TOP => db:migrate => db:load_config
(See full trace by running task with --trace)

我今天遇到了类似的问题。 这对我有用。 我尝试使用迈克尔的方法,但收到了类似的错误。

所以相反,我删除了我认为给我一个错误的 gem uninstall sqlite3 -v 1.4.0 ,通过 gem uninstall sqlite3 -v 1.4.0

而是在我的gem文件中使用。 gem 'sqlite3', '~> 1.3.6' 跑完 bundle update ,它对我来说就像一个魅力。


我在Gemfile中解决了配置sqlite3版本的错误,如下所示:

gem 'sqlite3', '~> 1.3', '< 1.4'

似乎sqlite3-1.3.6工作不正常并且还不支持sqlite3-1.4,所以它(我建议纠正这个问题的行)将下载最新的1.3版本。 就我而言,它是sqlite3-1.3.11。

我在我的项目中使用rails-5.0.0和ruby-2.5.1。


看起来系统中的sqlite3版本与应用程序中安装的版本不同。 在这种情况下,您可以更新应用的gem版本:

bundle update sqlite3

或者在Gemfile中更改gem版本:

gem 'sqlite3', '~> 1.4'

问题是由Active Record引起的,它对sqlite3 gem有版本限制。 例如,对于Rails 5.2.2(我在编写此响应时的最新稳定版本),它是 ~> 1.3.6 。 但是,此约束未在gemspec中指定,而是在 包含适配器类的源文件中 指定。 因此,Bundler没有意识到它,并安装sqlite3 gem版本1.4.0,这是冲突的。

好消息是 修复已经合并 到master和Rails 5.2维护分支(可能还有其他分支),并且应该包含在5.2.3中。

目前,您可以执行以下操作之一:

  • 在你的Gemfile中添加sqlite3约束:gem'sqlite3 gem 'sqlite3', '~> 1.3.6'
  • 从名为 5-2-stable 的分支安装Active Record。