【问题标题】:Getting rake db:migrate error获取 rake db:migrate 错误
【发布时间】:2013-09-03 08:41:21
【问题描述】:

尝试在 rails 中将名称字段添加到我的 simple_form

已添加 $ rails generate migration AddNameToUsers name:string

已添加到 user.db 文件和我的迁移文件中

class AddNameToUsers < ActiveRecord::Migration
  def change
    add_column :users, :name, :string
  end
end

但是当我运行 rake db:migrate 时出现以下错误(也运行了 bundle exec...)

耙子中止!发生错误,此迁移和所有后续迁移均已取消:

SQLite3::SQLException: duplicate column name: email: ALTER TABLE "users" ADD "email" varchar(255) DEFAULT '' NOT NULL/usr/local/rvm/gems/ruby-1.9.3-p392/gems/sqlite3-1.3.8/lib/sqlite3/database.rb:91:in `initialize' /usr/local/rvm/gems/ruby-1.9.3-p392/gems/sqlite3-1.3.8/lib/sqlite3/database.rb:91:in `new' /usr/local/rvm/gems/ruby-1.9.3-p392/gems/sqlite3-1.3.8/lib/sqlite3/database.rb:91:in `prepare' /usr/local/rvm/gems/ruby-1.9.3-p392/gems/sqlite3-1.3.8/lib/sqlite3/database.rb:134:in `execute'

有什么想法吗?

【问题讨论】:

  • 错误就在第一行,它说`重复的列名:电子邮件:ALTER TABLE "users" ADD "email"` 所以在你迁移的某个地方,你已经有一个名为 email 的列。这需要在运行 db:migrate 之前解决。每次您运行db:migrate 命令时,它都会迁移您的整个数据库,并发现您有一个名为电子邮件的现有字段。你能检查一下你有没有这个。如果你有这个,你需要删除它。因为另一个迁移正在尝试添加列名email
  • 感谢您的联系 - 老实说@david 不太确定在哪里寻找。我的迁移文件 devise_create_users.rb 和 add_devise_to_users.rb 和 add_name_to_name_to_users.rb 中有 3 个文件。我的 user.db 文件有这个 -> attr_accessible :email, :password, :password_confirmation, :remember_me, :name 不确定如何删除电子邮件字段。我正在尝试在我的注册表单中添加一个名称字段,该表单与电子邮件和密码字段一起使用,因为我添加了一个名称字段不起作用?
  • 请发布您的 devise_create_users.rb 和 add_devise_to_users.rb 迁移文件。
  • @Neil 你为什么要删除答案?
  • 我没有删除答案!

标签: ruby-on-rails-3.2 rake migrate


【解决方案1】:

我也有同样的经历。注意到 db/migrate 文件夹中有一个新的设计 .rb。我删除了它,然后刷新它,它工作。

【讨论】:

    猜你喜欢
    • 2014-07-16
    • 2018-10-06
    • 1970-01-01
    • 2017-03-01
    • 2018-02-05
    • 2011-10-07
    • 1970-01-01
    • 2014-07-31
    • 2015-12-13
    相关资源
    最近更新 更多