【问题标题】:Bundle Exec Rake DB Migrate捆绑 Exec Rake DB 迁移
【发布时间】:2013-08-06 18:13:24
【问题描述】:

我在为基本的 RoR 网站运行 bundle exec rake db:migrate 时遇到此错误。我是一个初学者,在这个站点和 Treehouse 上发现了类似的错误,但是这个错误的后半部分没有发现(从 NOT NULLC 开始)。我仍然不确定如何解决这个问题 - 任何人都可以建议吗?我在 Windows 上运行它。

SQLite3::SQLException: duplicate column name: email: ALTER TABLE "users" ADD "em
ail" varchar(255) DEFAULT '' NOT NULLC:/Sites/code/omrails-master/db/migrate/201
30804201341_add_devise_to_users.rb:5:in `block in up' 

【问题讨论】:

  • 这个迁移文件的内容是什么?另外,您当前的数据库架构是什么?
  • 很抱歉格式不正确 - 我可以尝试清理...数据库架构是什么?
  • 您粘贴的文字不可读。请使用 paste 或 gist.github.com 之类的服务。
  • 还有什么rake db:migrate:status 输出?
  • 这里是被引用的迁移文件的链接:pastie.org/private/wq4xxhgw7zpvlgg5kgunwg

标签: sql ruby-on-rails devise migration


【解决方案1】:

我猜这是因为您的 users 表中已经有 email 列(之前的迁移添加了它,可能是创建了表)并且您正在运行的设计迁移 (201 30804201341_add_devise_to_users.rb) 正在尝试重新添加它。是这样吗?

如果是这样,请打开首先创建users 表的迁移文件并删除创建email 列的行(它看起来像t.string :email)。关闭 Rails 服务器,然后执行以下操作。

$ bundle exec rake db:drop
$ bundle exec rake db:create
$ bundle exec rake db:migrate

【讨论】:

    【解决方案2】:

    我刚开始时遇到了这个问题。我总是通过重置数据库来解决它。您已经创建了一个列,因此重置它可能会起作用。

    运行

    bundle exec rake db:reset
    

    bundle exec rake db:create
    

    最后

    bundle exec rake db:migrate
    

    【讨论】:

    猜你喜欢
    • 2013-08-05
    • 2013-02-01
    • 2012-11-17
    • 1970-01-01
    • 2012-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多