Mysql2 ::错误:表" Admin_Users"已经存在

时间:2015-09-11 22:15:26

标签: mysql ruby-on-rails

--------------------------编辑#1 ------------ --------------

我找到了解决问题的方法:

问题:

我错字' d" admin_user",什么时候应该是" admin_users"在我的迁移中,运行了rake db:migrate。在完成迁移之前给出错误。

解决方案:

rake db:drop #drops the database
rake db:create #re-creates the database

问题:

如何在不删除整个数据库并重新创建数据库的情况下修复错误?显然,我不想删除真实项目的数据。

编辑#2 回答我的问题^:

您可以进入代码并评论已迁移的代码,这些代码将在您运行时完成剩余的迁移:

rake db:migrate

编辑结束#2

--------------------------编辑结束#1 ------------- -------------

我使用Ruby On Rails 4遇到了一个noobie MySQL问题。

class AlterUsers < ActiveRecord::Migration
def up
    rename_table("users", "admin_users")
    add_column("admin_users", "username", :string, :limit => 25, :after => "email")
    change_column("admin_users", "email", :string, :limit => 100)
    rename_column("admin_users", "password", "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
end

然后我跑了:

rake db:migrate

然后迁移&#34;创建用户&#34;,但在点击Alter Users Migration时给了我一个错误:

*** Adding an index is next ***
-- add_index("admin_user", "username")
rake aborted!
StandardError: An error has occurred, all later migrations canceled:
Mysql2::Error: Table 'simple_cms_development.admin_user' doesn't exist: CREATE  INDEX `index_admin_user_on_username`  ON `admin_user` (`username`)

然后我尝试了:

rake db:migrate:status

导致:

up     20150911203937  Do nothing yet
up     20150911204213  Create users
down    20150911212536  Alter users

所以我想通过使用:

恢复到所有DOWN状态
rake db:migrate VERSION=0

然后给了我另一个错误:

Mysql2::Error: Unknown table 'users': DROP TABLE `users`
/db/migrate/20150911204213_create_users.rb:16:in `down'

显然,这只是一个练习数据库和RoR项目,但是如何以最佳方式修复此错误,以便我不会删除任何重要内容(在未来的SQL项目中)。

我在发布之前已经阅读了这些主题:

http://stackoverflow.com/questions/24988889/mysql2error-table-conversations-already-exists
http://stackoverflow.com/questions/27876009/ruby-on-rails-mysql2error-table-pages-already-exists-create-table-pages

感谢您的任何答案/建议!

1 个答案:

答案 0 :(得分:0)

您的问题没有意义,您的错误(以及明显的db:migrate输出)显示问题,因为没有"admin_user"(单数)表,但您的迁移显示add_index("admin_users"...(复数)。最重要的是,您的帖子中从未提及您的问题主题中的错误。绝对看起来你已经陷入混乱,我的建议是放弃数据库并从头开始。