rails sqlite适配器错误

时间:2011-09-10 12:51:23

标签: ruby-on-rails ruby sqlite

我正在按照rails tutorial中的说明操作,并在尝试使用scaffold命令时遇到困难。

运行时:

rails generate scaffold User name:string email:string  

我收到错误:

C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/activerecord-3.1.0/lib/active_record/connection_adapters/abstract/connection_specification.rb:71:in `rescue in establish_connection': Please install the sqlite3 adapter: `gem install activerecord-sqlite3-adapter` (can't activate sqlite3 (~> 1.3.4), already activated sqlite3-1.3.3-x86-mingw32. Make sure all dependencies are added to Gemfile.) (RuntimeError)

运行:

gem install activerecord-sqlite3-adapter

我收到了错误:

ERROR:  Could not find a valid gem 'activerecord-sqlite3-adapter' (>= 0) in any repository
ERROR:  Possible alternatives: activerecord-jdbcsqlite3-adapter, activerecord-sqlserver-adapter, activerecord-nulldb-adapter, activerecord-spatialite-adapter, activerecord-simpledb-adapter

My Gemfile如下所示:

source 'http://rubygems.org'
gem 'rails', '3.1.0'  
gem 'sqlite3', '1.3.3'  
...

我在Windows 7 x64操作系统上运行。

有什么想法吗?

6 个答案:

答案 0 :(得分:19)

好的,我发现了问题。我注意到我的Rails安装有SQLite 1.3.3和1.3.4我改变了我的Gemfile:

gem 'sqlite3', '1.3.3'

为:

gem 'sqlite3', '1.3.4'

解决了这个问题。感谢@holger-just将我指向their answer中错误消息中的相关行。

答案 1 :(得分:10)

建议安装命令:

gem install activerecord-jdbc-sqlite3-adapter

实际安装命令:

gem install activerecord-jdbcsqlite3-adapter

参考: http://kenai.com/jira/browse/ACTIVERECORD_JDBC-19

答案 2 :(得分:3)

错误消息的重要部分是此代码段:

can't activate sqlite3 (~> 1.3.4), already activated sqlite3-1.3.3-x86-mingw32. Make sure all dependencies are added to Gemfile.

要解决这个问题,您应该始终通过bundle exec运行命令

bundle exec rails generate scaffold User name:string email:string 

这样,您就可以让捆绑商完全控制您的$LOAD_PATH,这可能会解决这些问题。

答案 3 :(得分:2)

我也有这个错误,买我的问题略有不同。 问题是sqlite3-ruby已弃用,将被sqlite3取代。在michael hartl的网络广播中,他仍然使用旧的sqlite3-ruby。

我编辑了我的gemfile以使用sqlite 1.3.4而不是sqlite3-ruby 1.3.1。 重新运行捆绑安装,瞧,问题解决了!

答案 4 :(得分:2)

而不是

gem install activerecord-sqlite3-adapter

运行

gem install sqlite3

答案 5 :(得分:2)

同样在Rails Tutorial上,运行:

  $ rake db:migrate

出现以下错误:

  

请安装sqlite3适配器:gem install   activerecord-sqlite3-adapter(sqlite3不是捆绑包的一部分。添加   它到Gemfile。)。

冉:

$ gem install activerecord-sqlite3-adapter

得到了:

  

错误:找不到有效的宝石'activerecord-sqlite3-adapter'(> =   0)在任何存储库中

根据上述答案之一更改了Gemfile:

  

gem'sqlite3','1.3.4'

得到了另一个错误,所以不得不安装:

$ gem install sqlite3 -v '1.3.4'

尝试再次运行$ rake db:migrate,但又出现了另一个错误,这次类似于上面的答案:

  

请安装sqlite3适配器:gem install activerecord-sqlite3-adapter(无法激活sqlite3(〜> 1.3.5),   已经激活了sqlite3-1.3.4。确保添加所有依赖项   到Gemfile。)

因此将Gemfile更改为:

  

gem'sqlite3','1.3.5'

并得到另一条错误消息,以确保'gem install sqlite3 -v'1.3.5'成功(wtf?!再次好)。成功安装,运行bundle install。

试着跑步:

$ rake db:migrate

没有发生任何事情,所以尝试过:

$ bundle exec rails generate scaffold User name:string email:string

上面的另一个建议。它终于奏效了。该教程警告说,一个艰苦的设置过程,但我觉得我必须混合和匹配至少5个其他人。希望这有助于下一个人。