2016-03-15 130 views
0
rake db:migrate 

堆棧跟蹤麻煩耙分貝:遷移命令

> == 20160315111403 Books: migrating ============================================ 
> -- create_table(:books) rake aborted! An error has occurred, all later migrations canceled: 

Error: 

> Mysql2::Error: Table 'books' already exists: CREATE TABLE `books` 
> (`id` int(11) auto_increment PRIMARY KEY, `title` varchar(32) NOT 
> NULL, `price` float, `subject_id` int(11), `description` text, 
> `created_at` datetime) 
> ENGINE=InnoDB/home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:305:in 
> `query' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:305:in 
> `block in execute' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract_adapter.rb:473:in `block in log' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activesupport-4.2.4/lib/active_support/notifications/instrumenter.rb:20:in 
> `instrument' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract_adapter.rb:467:in `log' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:305:in 
> `execute' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/connection_adapters/mysql2_adapter.rb:231:in 
> `execute' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract/schema_statements.rb:208:in 
> `create_table' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:468:in 
> `create_table' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:662:in 
> `block in method_missing' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:631:in 
> `block in say_with_time' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:631:in 
> `say_with_time' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:651:in 
> `method_missing' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:416:in 
> `method_missing' 
> /home/paritosh/library/db/migrate/20160315111403_books.rb:4:in `up' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:568:in 
> `up' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:608:in 
> `exec_migration' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:589:in 
> `block (2 levels) in migrate' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:588:in 
> `block in migrate' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:292:in 
> `with_connection' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:587:in 
> `migrate' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:765:in 
> `migrate' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:995:in 
> `block in execute_migration_in_transaction' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:1043:in 
> `ddl_transaction' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:994:in 
> `execute_migration_in_transaction' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:956:in 
> `block in migrate' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:952:in 
> `each' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:952:in 
> `migrate' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:820:in 
> `up' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/migration.rb:798:in 
> `migrate' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/tasks/database_tasks.rb:137:in 
> `migrate' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/activerecord-4.2.4/lib/active_record/railties/databases.rake:44:in 
> `block (2 levels) in <top (required)>' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/rake-10.0.4/lib/rake/task.rb:246:in 
> `call' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/rake-10.0.4/lib/rake/task.rb:246:in 
> `block in execute' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/rake-10.0.4/lib/rake/task.rb:241:in 
> `each' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/rake-10.0.4/lib/rake/task.rb:241:in 
> `execute' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/rake-10.0.4/lib/rake/task.rb:184:in 
> `block in invoke_with_call_chain' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/rake-10.0.4/lib/rake/task.rb:177:in 
> `invoke_with_call_chain' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/rake-10.0.4/lib/rake/task.rb:170:in 
> `invoke' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/rake-10.0.4/lib/rake/application.rb:143:in 
> `invoke_task' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/rake-10.0.4/lib/rake/application.rb:101:in 
> `block (2 levels) in top_level' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/rake-10.0.4/lib/rake/application.rb:101:in 
> `each' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/rake-10.0.4/lib/rake/application.rb:101:in 
> `block in top_level' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/rake-10.0.4/lib/rake/application.rb:110:in 
> `run_with_threads' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/rake-10.0.4/lib/rake/application.rb:95:in 
> `top_level' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/rake-10.0.4/lib/rake/application.rb:73:in 
> `block in run' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/rake-10.0.4/lib/rake/application.rb:160:in 
> `standard_exception_handling' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/gems/rake-10.0.4/lib/rake/application.rb:70:in 
> `run' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/bin/ruby_executable_hooks:15:in 
> `eval' 
> /home/paritosh/.rvm/gems/ruby-2.2.3/bin/ruby_executable_hooks:15:in 
> `<main>' Tasks: TOP => db:migrate (See full trace by running task with 
> --trace) 
+1

由於錯誤提示'books'已經存在。您可以嘗試使用'rake db:drop db:create db:migrate' –

+1

rake db:reset應該也能工作......它會運行所有這些命令 – toddmetheny

回答

0

使用此代碼:

rake db:rollback or rake db:migrate:down VERSION=<timestamp> 

然後用rake db:migrate

0

嘗試這樣做,如果現有的數據不重要

rake db:schema:load 

查看更多db命令here

希望能對您有所幫助!

1

我想試試這個:

$ rake db:drop 
$ rake db:create 
$ rake db:migrate 

rake db:drop將放棄當前的數據庫。如果您已經爲環境生產,開發和測試生成了數據庫,那麼您可能需要運行rake db:drop:all以使用單個命令清除所有這些數據庫,以便稍後重新創建它們。例如,如果您想放棄開發數據庫,​​則可以運行RAILS_ENV=development rake db:drop

rake db:create將再次創建數據庫。然後,如果您想爲所有環境(生產,開發和測試)創建數據庫,則可以運行rake db:create:all

最後,

rake db:migrate將執行,因爲您創建的數據庫模型生成的所有遷移。這將使您的當前數據庫處於最新狀態。

這三個操作將爲您提供全新的數據庫,並且在再次運行遷移時不會看到此「表已存在」。

順便說一句,如果你插入的數據與DB/seed.rb,那麼現在是時候再次運行rake db:seed來填充你的數據庫。

+0

當然@TobySpeight。我會去做。 –

+0

現在好多了@TobySpeight? –