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

Jua*_*uez 63 ruby sqlite ruby-on-rails

我正在使用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)
Run Code Online (Sandbox Code Playgroud)

小智 81

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

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

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

  • 今天也有类似的问题.花了30分钟试图搞清楚,这完美无缺.非常感谢! (4认同)
  • 有用.我认为问题出在ActiveRecord中. (3认同)
  • 这完全符合我的要求.在Ubuntu 10.04上运行Rails 5.2.2 (2认同)
  • @skalee有一个完美的答案。 (2认同)

小智 48

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

gem 'sqlite3', '~> 1.3', '< 1.4'
Run Code Online (Sandbox Code Playgroud)

似乎sqlite3-1.3.6工作不正常并且还不支持sqlite3-1.4,因此它将下载最新的1.3版本.就我而言,它是sqlite3-1.3.11.

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

  • 像魅力一样工作。仅供参考...我正在使用 mac (osx 10.13.2)、rails 5.2.2、ruby 2.6,所有开发都在 RubyMine 中完成。 (2认同)
  • 在版本5.2.2的Sqlite3的ActiveRecord适配器中,依赖性版本被硬编码为“ gem” sqlite3“,”〜&gt; 1.3.6“` (2认同)

ska*_*lee 30

问题是由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中.

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

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


fem*_*izo 13

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

地点:

C:\Ruby\lib\ruby\gems\2.5.0\gems\activerecord-5.2.2\lib\active_record\connection_adapters\
Run Code Online (Sandbox Code Playgroud)

文件:

sqlite3_adapter.rb
Run Code Online (Sandbox Code Playgroud)

变了

gem "sqlite3", "~> 1.3.6"
Run Code Online (Sandbox Code Playgroud)

gem "sqlite3", "~> 1.4.0"
Run Code Online (Sandbox Code Playgroud)

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

我的环境

Windows 10
Ruby : 2.5.3-p105
Rails: 5.2.2
Run Code Online (Sandbox Code Playgroud)


Mic*_*pov 6

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

bundle update sqlite3
Run Code Online (Sandbox Code Playgroud)

或者在 Gemfile 中更改 gem 版本:

gem 'sqlite3', '~> 1.4'
Run Code Online (Sandbox Code Playgroud)