2014-10-31 4 views
0

Я пытаюсь использовать программу для создания системы проверки подлинности для блога, который я программирую. Когда я пытаюсь просмотреть блог, он говорит (Migrations ждут, запустите «bin/rake db: migrate RAILS_ENV = development», чтобы разрешите эту проблему.), и когда я запускаю команду, она терпит неудачу и делает это сообщение:Как удалить миграцию в моей базе данных?

Moussas-MacBook-Pro:theBlog moussasarr$ bin/rake db:migrate RAILS_ENV=development 
== 20141031151735 SorceryCore: migrating ====================================== 
-- create_table(:authors) 
rake aborted! 
StandardError: An error has occurred, this and all later migrations canceled: 

SQLite3::SQLException: table "authors" already exists: CREATE TABLE "authors" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "username" varchar(255) NOT NULL, "email" varchar(255) NOT NULL, "crypted_password" varchar(255) NOT NULL, "salt" varchar(255) NOT NULL, "created_at" datetime, "updated_at" datetime) /Users/moussasarr/.rvm/gems/[email protected]_rails_4_0/gems/sqlite3-1.3.8/lib/sqlite3/database.rb:91:in `initialize' 

. В прошлом я переносил таблицу авторов, но мне пришлось перезапустить ее с более ранней точки, поскольку она не работала. Как удалить миграцию SorceryCore, чтобы создать новую?

Вот миграция таблицы:

class SorceryCore < ActiveRecord::Migration 
    def change 
    create_table :authors do |t| 
     t.string :username,   :null => false 
     t.string :email,   :null => false 
     t.string :crypted_password, :null => false 
     t.string :salt,    :null => false 
     t.timestamps 
     end 
     add_index :authors, :email, unique: true 
     end 
     end 

Я действительно хочу, чтобы получить эту таблицу из базы данных и нажмите на новую таблицу. Большое спасибо за вашу помощь! Это оригинальная проблема, которая заставила меня перезапустить на более раннем уровне и заставила меня потерять так много времени.

+0

Вы можете 'rake db: migrate: reset', если вы не заботитесь о данных локально. Вам придется «грабить db: seed» после, или просто добавлять новые вещи, поскольку это удалит все. – jeremywoertink

+0

Спасибо, jeremy за ваш ответ! Удастся ли это удалить структуру некоторых моделей, которые я улучшил посредством миграции? Должен ли я переделать все миграции? – codigomonstruo

+0

команда 'rake db: migrate: reset' будет просто удалять всю базу данных, а затем повторно запускать все миграции с самого начала. Это просто быстрый способ повторной синхронизации всех ваших миграций, если они вышли, как у вас. Не нужно менять модели или что-то (обычно). – jeremywoertink

ответ

0

Вы можете сделать db:migrate:down VERSION=your_migration_version, чтобы удалить таблицу из базы данных, а затем удалить файл миграции, а затем выполнить миграции, необходимые для вашей аутентификации devise.

Однако, убедитесь, что вы не нуждаетесь в authors таблице в любых миграциях до завещанию, так как он не будет существовать и может быть потенциально большой проблемой с кодовым и все.

+0

Является ли версия меткой времени, предшествующей имени миграции? – codigomonstruo

+0

Вы можете использовать как временную метку, так и все имя файла. – sebkkom

Смежные вопросы