我用devise和漂亮的生成器创建了一个数据库。我正在尝试使用nifty生成器(rails g nifty:scaffold Asset user_id:integer)创建一个新数据库,但是当我尝试迁移数据库(rake db:migrate)时,出现以下错误:

charlotte-dator:showwwdown holgersindbaek$ rake db:migrate
==  DeviseCreateUsers: migrating ==============================================
-- create_table(:users)
rake aborted!
An error has occurred, all later migrations canceled:

Mysql2::Error: Table 'users' already exists: CREATE TABLE `users` (`id` int(11) DEFAULT NULL auto_increment PRIMARY KEY, `email` varchar(255) DEFAULT '' NOT NULL, `encrypted_password` varchar(128) DEFAULT '' NOT NULL, `reset_password_token` varchar(255), `reset_password_sent_at` datetime, `remember_created_at` datetime, `sign_in_count` int(11) DEFAULT 0, `current_sign_in_at` datetime, `last_sign_in_at` datetime, `current_sign_in_ip` varchar(255), `last_sign_in_ip` varchar(255), `name` varchar(255), `created_at` datetime, `updated_at` datetime) ENGINE=InnoDB

Tasks: TOP => db:migrate
(See full trace by running task with --trace)

我正在学习教程,并且很难理解为什么会发生这种情况。谁能解释发生了什么?

最佳答案

迁移尝试创建数据库中已存在的表。

尝试从数据库中删除用户表。您的迁移过程出了点问题。您还应该将schema.rb版本与db / migrate / *。rb文件进行比较。

说明:

似乎许多SO用户不同意我的答复,因为他们认为该答复不正确或不建议这样做。

删除表始终具有破坏性,我认为每个人都可以理解。

我应该提到add_column,因为该表是在另一个迁移文件中创建的。

09-13 05:57