0

我跑耙分贝:迁移和我在终端耙分贝:迁移返回错误

SQLite3::SQLException: no such table: admin_users: ALTER TABLE "admin_users" ADD "username" varchar(25)/Users/IsaiahxD/.rvm/gems/ruby-2.2.1/gems/sqlite3-1.3.10/lib/sqlite3/database.rb:91:in `initialize' 
/Users/IsaiahxD/.rvm/gems/ruby-2.2.1/gems/sqlite3-1.3.10/lib/sqlite3/database.rb:91:in `new' 
/Users/IsaiahxD/.rvm/gems/ruby-2.2.1/gems/sqlite3-1.3.10/lib/sqlite3/database.rb:91:in `prepare' 
/Users/IsaiahxD/.rvm/gems/ruby-2.2.1/gems/sqlite3-1.3.10/lib/sqlite3/database.rb:134:in `execute' 
/Users/IsaiahxD/.rvm/gems/ruby-2.2.1/gems/activerecord-4.2.3/lib/active_record/connection_adapters/sqlite3_adapter.rb:329:in `block in execute' 
/Users/IsaiahxD/.rvm/gems/ruby-2.2.1/gems/activerecord-4.2.3/lib/active_record/connection_adapters/abstract_adapter.rb:473:in `block in log' 

碰到这个错误就我看着我的alter_user.rb文件class AlterUsers < ActiveRecord::Migration

这是文件20150825065823_alter_users。 RB

def up 
    rename_table("users", "admin_users.broken") 
    add_column("admin_users", "username", :string, :limit => 25, :after => "email") 
    change_column("admin_users", "email", :string, :limit => 100) 
    rename_column("admin_users", "broken", "hashed_password") 
    puts "*** Adding an index is next ***" 
    add_index("admin_users", "username") 
end 

def down 
    remove_index("admin_users", "username") 
    rename_column("admin_users", "hashed_password", "password") 
    change_column("admin_users", "email", :string, :default => "" , :null => false) 
    remove_column("admin_users", "username") 
    rename_table("admin_users", "users") 
end 

回答

3

在你#up方法,您要添加列admin_users但你没有定义的表呢。

相反的:

rename_table("users", "admin_users.broken")

尝试:

rename_table("users", "admin_users")

+0

还在说StandardError的:发生错误,这和所有后来迁移取消:无此列:admin_users.broken /Users/IsaiahxD/.rvm/gems/ruby-2.2.1/gems/activerecord-4.2.3/lib/active_record/connection_adapters/abstract_adapter.rb:490:in'column_for' /Users/IsaiahxD/.rvm/gems /ruby-2.2.1/gems/activ erecord-4.2.3/lib/active_record/connection_adapters/sqlite3_adapter.rb:497:in'rename_column' /Users/IsaiahxD/.rvm/gems/ruby-2.2.1/gems/activerecord-4.2.3/lib/active_record /migration.rb:661:in'block in method_missing' –

+0

这是因为您已经使用admin_users.broken作为表名称运行迁移。将代码替换回'rename_table(“users”,“admin_users.broken”)',然后执行:'rake db:rollback',然后将代码替换为:'rename_table(“users”,“admin_users”)'now迁移。 – Nathan