Ошибка адаптера rails sqlite
Я следую инструкциям в руководстве по настройкам rails и застрял при попытке использовать команду 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
Мой Gemfile выглядит так:
source 'http://rubygems.org'
gem 'rails', '3.1.0'
gem 'sqlite3', '1.3.3'
...
Я запускаюсь в ОС Windows 7 x64.
Любые идеи?
Ответы
Ответ 1
Хорошо, я нашел проблему. Я заметил, что моя установка Rails имеет как SQLite 1.3.3, так и 1.3.4. Я изменил свой Gemfile на:
gem 'sqlite3', '1.3.3'
в
gem 'sqlite3', '1.3.4'
Это решило проблему. Спасибо @holger-just за то, что указали мне на соответствующую строку в сообщении об ошибке в их ответе.
Ответ 2
предлагаемая команда установки:
gem install activerecord-jdbc-sqlite3-adapter
действительная команда установки:
gem install activerecord-jdbcsqlite3-adapter
Ссылка:
http://kenai.com/jira/browse/ACTIVERECORD_JDBC-19
Ответ 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
, который, вероятно, решит эти проблемы.
Ответ 4
У меня тоже была эта ошибка, покупка моей проблемы была немного иной.
проблема заключается в том, что sqlite3-ruby устарел, и его заменит sqlite3. в интернет-трансляции Майкла Хартля он все еще использовал старый sqlite3-ruby.
Я редактировал свой gemfile для использования sqlite 1.3.4 вместо sqlite3-ruby 1.3.1.
re-ran bundle install и voila, проблема решена!
Ответ 5
Вместо
gem install activerecord-sqlite3-adapter
бег
gem install sqlite3
Ответ 6
Также в Rails Tutorial запущен:
$ rake db:migrate
Появилась следующая ошибка:
Установите адаптер sqlite3: gem install activerecord-sqlite3-adapter (sqlite3 не входит в комплект поставки. это в Gemfile.).
Ран:
$ gem install activerecord-sqlite3-adapter
Got:
ОШИБКА: Не удалось найти действительный gem 'activerecord-sqlite3-adapter' ( >= 0) в любом репозитории
Изменен Gemfile в соответствии с одним из ответов выше:
gem 'sqlite3', '1.3.4'
Появилась еще одна ошибка, поэтому пришлось установить:
$ gem install sqlite3 -v '1.3.4'
Пробовал запуск $rake db: снова выполнить миграцию, но получил еще одну ошибку, на этот раз напоминающую ответ выше:
Пожалуйста, установите адаптер 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?!). Установил его успешно, выполнил установку пакета.
Прогоняется:
$ rake db:migrate
Ничего не произошло, поэтому попробовали:
$ bundle exec rails generate scaffold User name:string email:string
По другому предложению выше. И это наконец сработало. Учебник предупредил о трудоемком процессе установки, но я чувствовал, что мне нужно смешивать и сочетать, по меньшей мере, с 5 другими людьми. Надеюсь, это поможет следующему человеку.