【问题标题】:Bundle Exec Rake DB Migrate ErrorBundle Exec Rake DB 迁移错误
【发布时间】:2013-08-05 16:08:59
【问题描述】:

我在为基本的 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'

【问题讨论】:

    标签: sqlite ruby-on-rails-3.1 devise rake migrate


    【解决方案1】:

    SQlite 错误表明您已经为用户表创建了电子邮件字段。

    ADD "email" varchar(255) DEFAULT '' NOT NULL。所以尝试使用“不同的列名”

    或删除旧迁移。

    def change 
      remove_column  :users, :email, <type>
    end
    

    之后使用此迁移

    def up
      add_column :users, :email, :string
    end
    
    
    def down
      remove_column :users, :email, :string
    end
    

    【讨论】:

    • 我把这段代码放在哪里?在 user.rb 文件中?我将第一个代码输入到我的 models/user.rb 文件中,然后运行 ​​bundle exec rake db:migrate 并得到了同样的错误。我需要为第一部分尝试不同的方法>
    • 您需要进行迁移,或者如果您是 Rails 新手......请阅读一些关于上下变化的迁移概念。 guides.rubyonrails.org/migrations.html
    • hmm...您能否进一步建议...我将上述代码放入指定的数据库迁移文件中。然后我输入了 bundle exec db:migrate 但它似乎不起作用。
    • "SQLite3::SQLException: duplicate column name: email:" 所以使用 SQLite 数据库浏览器(如果它不在 pc 中下载它)并检查用户表,电子邮件列是否已经存在。如果电子邮件列不存在,则运行向上和向下迁移,如果电子邮件列已经存在,则尝试将其删除并使用更改迁移重新创建。我已经提到了一些关于添加/删除列的迁移概念。
    • 这是我再次提出的同一个问题的链接。没有 test.sqlite3 数据库。我下载了 SQLITE 数据库浏览器。我正在努力实际创建这个,但如果你能提出建议,我将不胜感激(我正在努力解决这个问题)。 stackoverflow.com/questions/18087481/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-19
    • 2011-04-29
    • 2012-06-16
    • 2011-11-06
    相关资源
    最近更新 更多