无法激活sqlite3(〜> 1.3.6),已激活sqlite3-1.4.0

时间:2019-02-05 03:13:17

标签: ruby-on-rails ruby sqlite

我正在使用Ubuntu,在将db:migrate用于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)

5 个答案:

答案 0 :(得分:76)

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

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

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

答案 1 :(得分:45)

我解决了在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。

答案 2 :(得分:26)

此问题是由Active Record引起的,该Active Record对sqlite3 gem具有版本限制。例如,在Rails 5.2.2(我撰写此响应时是最新的稳定版本)的情况下,它是~> 1.3.6。但是,此约束不是在gemspec中指定的,而是在a source file which contains the adapter class中指定的。因此,Bundler并未意识到这一点,因此安装了冲突的sqlite3 gem版本1.4.0。

好消息是fix has been already merged进入master和Rails 5.2维护分支(可能还有其他分支),应该包含在5.2.3中。

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

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

答案 3 :(得分:12)

没有一个解决方案对我有用,因此我跟踪了错误并找到了连接适配器

位置:

C:\Ruby\lib\ruby\gems\2.5.0\gems\activerecord-5.2.2\lib\active_record\connection_adapters\

文件:

sqlite3_adapter.rb

已更改

gem "sqlite3", "~> 1.3.6"

gem "sqlite3", "~> 1.4.0"

我刷新了网页,一切正常!

我的环境

Windows 10
Ruby : 2.5.3-p105
Rails: 5.2.2

答案 4 :(得分:4)

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

bundle update sqlite3

或更改Gemfile中的gem版本:

gem 'sqlite3', '~> 1.4'