2014-02-12 48 views
1

我遇到了我的rails数据库问题。我最近恢复到以前的提交,并试图通过服务器和数据库启动并运行。Rails - 没有这样的表[rake db:migrate]

我已经运行rake db:migrate和“耙分贝:创建”,这都返回相似的结果

不知道如何解决它?

rake aborted! 
An error has occurred, this and all later migrations canceled: 
SQLite3::SQLException: no such table: main.users: CREATE UNIQUE INDEX "index_users_on_email" ON "users" ("email")/Users/Marcus/.rvm/gems/[email protected]/gems/sqlite3-1.3.8/lib/sqlite3/database.rb:91:in `initialize' 

包括跟踪

$ rake db:migrate --trace 
** Invoke db:migrate (first_time) 
** Invoke environment (first_time) 
** Execute environment 
** Invoke db:load_config (first_time) 
** Invoke rails_env (first_time) 
** Execute rails_env 
** Execute db:load_config 
** Execute db:migrate 
== AddIndexToUsersEmail: migrating =========================================== 
-- add_index(:users, :email, {:unique=>true}) 
rake aborted! 
An error has occurred, this and all later migrations canceled: 

让我知道如果我能/应提供的信息吗?

感谢

更多信息

$rake db:reset 

-- create_table("attendees", {:force=>true}) 
    -> 0.0120s 
-- create_table("competitions", {:force=>true}) 
    -> 0.0020s 
-- create_table("devices", {:force=>true}) 
    -> 0.0019s 
-- create_table("users", {:force=>true}) 
    -> 0.0045s 
-- add_index("users", ["email"], {:name=>"index_users_on_email", :unique=>true}) 
    -> 0.0011s 
-- add_index("users", ["remember_token"], {:name=>"index_users_on_remember_token"}) 
    -> 0.0010s 
-- initialize_schema_migrations_table() 
    -> 0.0019s 
-- assume_migrated_upto_version(20140210000927,  ["/Users/Marcus/Sites/Rails/rails_projects/BattleOfTheBands/db/migrate"]) 
    -> 0.0066s 
You have 1 pending migrations: 
    20140211231110 AddDeviseToUsers 
Run `rake db:migrate` to update your database then try again. 

现在,当我运行 '耙分贝:迁移'

SQLite3::SQLException: duplicate column name: email: ALTER TABLE "users" ADD "email" varchar(255) DEFAULT '' NOT NULL/Users/Marcus/.rvm/gems/[email protected]/gems/sqlite3-1.3.8/lib/sqlite3/database.rb:91:in `initialize' 
+0

它看起来像你试图创建一个尚不存在的表上的索引。我会尝试做一个'rake db:reset',看看是否有帮助。如果没有,请检查您的迁移以确保在创建用户表之前尝试将索引置于其中。 – jklina

+0

似乎没有迁移是有创建用户表 – Muntasim

+0

添加更多的信息后“rake db:reset” – Marcus

回答

2

在我的情况,我能删除我的框sqlite3的文件来解决这个问题,然后运行:

rake db:create 

然后执行:

rake db:migrate 

希望这有助于其他人使用相同的问题。

1

当您运行分贝:重置它创建一个用户表我假设你已经为它添加了一个电子邮件字段,或者索引创建会引发错误。然后运行缺失的迁移以添加设计。 Devise包括一个类AddDeviseToUsers其中包括:

change_table(:users) to |t| 
     ## Database authenticatable 
     t.string :email,    :null => false, :default => "" 

这就是为什么它失败。只需从您的用户迁移中删除电子邮件字段,它就可以工作或从设计迁移中删除它。

0

rake db:reset为我工作。谢谢!

相关问题