【问题标题】:Mysql2::Error: Table "Admin_Users" already existsMysql2::Error: 表“Admin_Users”已经存在
【发布时间】:2018-12-25 19:03:48
【问题描述】:

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

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

问题:

我打错了“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 时遇到了一个菜鸟 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

然后迁移“创建用户”,但在点击更改用户迁移时给了我一个错误:

*** 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

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

【问题讨论】:

  • 太好了,我进入了我的 MySQL 数据库,实际上删除了表(认为它会恢复为默认值)“admin_users”。这并没有改变任何东西。雕像是一样的,还有错误..-_-,请帮助。
  • 您复制的用户表中是否有一个名为用户名的字段?如果是这样,则可能无法创建已经存在的列。

标签: mysql ruby-on-rails


【解决方案1】:

您的问题没有意义,您的错误(以及明显的db:migrate 输出)表明存在问题,因为没有"admin_user"(单数)表,而您的迁移显示add_index("admin_users"...(复数)。最重要的是,您的帖子中从未提及您的问题主题中的错误。绝对看起来你已经把自己弄得一团糟,我的建议是删除数据库并从头开始。

【讨论】:

  • 我发现我打错了“admin_user”,然后将其更改为“admin_users”。不过,在 rake db:migrate 之后。我刚刚删除了整个数据库。有没有办法“重新插入”数据库?
猜你喜欢
  • 1970-01-01
  • 2014-09-19
  • 2014-11-02
  • 1970-01-01
  • 1970-01-01
  • 2014-07-10
  • 1970-01-01
  • 2015-05-23
  • 2018-09-22
相关资源
最近更新 更多