Я использую RoR (3.2.2) и SQLite 3 (1.3.5).Когда я изначально создаю модель, я могу успешно создать базу данных.Тем не менее, всякий раз, когда я пытаюсь использовать генератор миграции, кажется, что нет никаких проблем в командной строке (без ошибок), но когда я проверяю базу данных, ничего не обновляется и не изменяется.
Например, я создаю этобаза данных:
$ rails generate model User name:string email:string
db / migrate / [timestamp] _create_users.rb
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :name
t.string :email
t.timestamps
end
end
end
И я запускаю миграцию:
$ bundle exec rake db:migrate
Пока все хорошо,Я проверяю свою базу данных, используя SQLite Database Browser, и все выглядит так, как должно.
Затем, если я хочу добавить индекс:
$ rails generate migration add_index_to_users_email
db / migrate / [timestamp] _add_index_to_users_email.rb
class AddIndexToUsersEmail < ActiveRecord::Migration
def change
add_index :users, :email, unique: true
end
end
Я запускаю миграцию:
$ bundle exec rake db:migrate
И командная строка дает мне следующее:
bundle exec rake db: migrate == AddIndexToUsersEmail: миграция========================================================== AddIndexToUsersEmail: перенесено (0.0000s) ========================================
Однако, когда я проверяюмоя база данных с использованием SQLite Database Browser не обновляется.Я получаю те же результаты, если пытаюсь добавить новые столбцы в таблицу и т. Д. Единственный способ выполнить миграцию - это обновить базу данных вручную с помощью браузера баз данных SQLite.Любая помощь в том, почему он не работает через Rails и командная строка, будет принята с благодарностью.
Вот мой gemfile:
source 'https://rubygems.org'
gem 'rails', '3.2.2'
gem 'bootstrap-sass', '2.0.0'
group :development, :test do
gem 'sqlite3', '1.3.5'
gem 'rspec-rails', '2.8.1'
gem 'annotate', '~> 2.4.1.beta'
end
group :assets do
gem 'sass-rails', '3.2.4'
gem 'coffee-rails', '3.2.2'
gem 'uglifier', '1.2.3'
end
gem 'jquery-rails', '2.0.0'
group :test do
gem 'capybara', '1.1.2'
end
group :production do
gem 'pg', '0.12.2'
end
Database.yml
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
test:
adapter: sqlite3
database: db/test.sqlite3
pool: 5
timeout: 5000
production:
adapter: sqlite3
database: db/production.sqlite3
pool: 5
timeout: 5000
Пример успешного добавления столбца:
rails generate migration add_password_digest_to_users password_digest:string
invoke active_record
create db/migrate/20120318235656_add_password_digest_to_users.rb
$ subl db/migrate/[timestamp]_add_password_digest_to_users.rb
$ bundle exec rake db:migrate
== AddPasswordDigestToUsers: migrating =======================================
-- add_column(:users, :password_digest, :string) -> 0.0008s
== AddPasswordDigestToUsers: migrated (0.0009s) ==============================
Пример неудачного добавления столбца:
$ rails generate migration add_remember_token_to_users
invoke active_record
create db/migrate/20120319010623_add_remember_token_to_users.rb
$ subl db/migrate/[timestamp]_add_remember_token_to_users.rb
$ bundle exec rake db:migrate
== AddRememberTokenToUsers: migrating ========================================
== AddRememberTokenToUsers: migrated (0.0000s) ===============================
Обратите внимание, что при сбое при обновлении базы данных время миграции равно нулю.Я не уверен, что я делаю неправильно.Заранее спасибо за любые предложения.