2012-06-12 5 views
0

Недавно я добавил Devise и CanCan в мое приложение Rails 3.2.3 и должен запустить rake db:migrate, чтобы заставить их работать исправно. У меня есть файл миграции для ссылок, которые я создал уже и это как-то конфликтует с тем, когда я бегу rake db:migrateRails 3 Migration screw ups

== CreateLinks: migrating ==================================================== 
-- create_table(:links) 
rake aborted! 
An error has occurred, this and all later migrations canceled: 

SQLite3::SQLException: table "links" already exists: CREATE TABLE "links" ("id"INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "url" varchar(255), "description" var 
char(255), "created_at" datetime NOT NULL, "points" integer, "updated_at" dateti 
me NOT NULL) 

Я попытался запустить rake db:migrate:reset, но это, кажется, не делать ничего, чтобы помочь моей ситуации. Я все еще не могу запустить миграцию db для своих новых драгоценных камней. Как я могу обойти это? Могу ли я опустить миграцию ссылок?

+0

вы пытаетесь создать таблицу, которая уже существует! удалите таблицы «ссылки» или используйте «rake db: rollback», если это была ваша последняя миграция, а затем снова запустить «rake db: migrate». – tmaximini

+0

попробовал db: rollback, но это еще не дало мне той же проблемы. как я могу удалить таблицы «ссылки»? –

ответ

2

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

Если вас не волнует какая-либо из данных в базе данных, вы можете сделать сначала rake db:drop, затем выполните rake db:migrate. Это сбрасывает все таблицы в базе данных и снова запускает все миграции с самого начала.

Если вам необходимо сохранить существующие таблицы базы данных, вы можете обернуть оператор create_table :links оператором unless table_exists? :links.

+0

Удивительный это сделал трюк! Большое вам спасибо –

+0

Который сделал трюк? Использование rake db: drop или table_exists ?. –

+0

rake db: drop lol ..... как-то мои миграции вышли из синхронизации, и я не знал правильных команд, кроме рейка db: migrate и rake db: reset .... еще раз спасибо! –