2011-09-10 94 views
16

我按照rails tutorial中的說明進行操作,試圖使用scaffold命令時卡住了。rails sqlite適配器錯誤

當運行:

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 

我的Gemfile看起來是這樣的:

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

我在Windows 7 x64操作系統上運行。

任何想法?

回答

18

好的,我發現這個問題。我注意到,我的Rails安裝有兩個SQLite的1.3.3和1.3.4我改變了我的Gemfile來自:

gem 'sqlite3', '1.3.3' 

到:

gem 'sqlite3', '1.3.4' 

這解決了這個問題。謝謝@holger-just將我指向their answer中的錯誤消息中的相關行。

+1

我加了我的,就像這樣:gem'sqlite3'。那爲我解決了同樣的問題:-) – MarlonRibunal

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這可能會解決這些問題。

+0

感謝@Holager exec沒有解決問題,但您指出了錯誤消息中的相關行。這幫助我解決了這個問題。 –

2

我也有這種錯誤,買我的問題略有不同。 問題是,sqlite3-ruby已被棄用,被替換爲sqlite3。在邁克爾哈特爾的網絡直播中,他仍然使用舊的sqlite3-ruby。

我編輯我的gemfile使用sqlite 1.3.4而不是sqlite3-ruby 1.3.1。 重新運行bundle install,瞧,問題解決了!

2

而不是

gem install activerecord-sqlite3-adapter 

運行

gem install sqlite3 
2

此外on Rails的教程,跑:

$ rake db:migrate 

得到了以下錯誤:

Please install the sqlite3 adapter: gem install activerecord-sqlite3-adapter (sqlite3 is not part of the bundle. Add it to Gemfile.).

冉:

$ gem install activerecord-sqlite3-adapter

了:

ERROR: Could not find a valid gem 'activerecord-sqlite3-adapter' (>= 0) in any repository

根據上述答案的一個改變的Gemfile:

gem 'sqlite3', '1.3.4'

得到了另一個錯誤所以只好裝:

$ gem install sqlite3 -v '1.3.4' 

試圖運行$耙分貝:再次遷移,卻得到了另一個錯誤,這一次類似於上面的答案:

Please install the sqlite3 adapter: gem install activerecord-sqlite3-adapter (can't activate sqlite3 (~> 1.3.5), already activated sqlite3-1.3.4. Make sure all dependencies are added to Gemfile.)

這麼改的Gemfile到:

gem 'sqlite3', '1.3.5'

,並得到另一個錯誤信息,以確保'gem install sqlite3 -v'1.3.5'成功(wtf ?!再次好)。成功安裝它,運行軟件包安裝。

試圖運行:

$ rake db:migrate 

什麼也沒發生,所以嘗試:

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

按照上述其他建議。它終於奏效了。該教程提醒我們需要費力的安裝過程,但是我覺得我必須至少有5個人混合搭配。希望這有助於下一個人。