【问题标题】:$rake db:migrate An error has occurred, this and all later migrations canceled$rake db:migrate 发生错误,此迁移和所有后续迁移已取消
【发布时间】:2012-01-25 06:26:05
【问题描述】:

我是 RoR 的新手,我不断收到此错误消息:

$ rake db:migrate
==  CreateUsers: migrating ====================================================
-- create_table(:users)
rake aborted!
An error has occurred, this and all later migrations canceled:

SQLite3::SQLException: table "users" already exists: CREATE TABLE "users" ("id"
INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "email" varchar
(255), "created_at" datetime, "updated_at" datetime)

Tasks: TOP => db:migrate
(See full trace by running task with --trace)

我已经搜索了 3 天的解决方案,但似乎找不到任何适合我的解决方案。

提前感谢您的帮助:) PS - 我正在关闭 Windows。

【问题讨论】:

    标签: ruby-on-rails windows sqlite rake


    【解决方案1】:

    不确定您是否在关注 Michael Hartl 的 RoR 教程。

    但是有人说教程的步骤有问题http://archive.railsforum.com/viewtopic.php?id=44944

    rake db:drop:all 擦除所有内容 然后再次运行 rake db:migrate 应该可以解决问题。

    祝你好运

    【讨论】:

    • 我必须在rake db:drop:all 之后运行rake db:create,然后才能运行rake db:migrate
    【解决方案2】:

    table "users" already exists 似乎是问题所在。您是否尝试使用 SQLITE admin tool 手动从数据库中删除该表?

    或者您可以在迁移脚本中包含一个删除表(应该在您的 db/migrate 文件夹中称为 create_users.rb)。里面def up插入drop_table :users

          def up
             drop_table :users
    
             create_table :users do |t|
             t.string :name
             #...
    
             t.timestamps
          end
    

    哦,我记得在我的 RoR 时间里,表名“Users”可能会在以后引起问题。可能与此有关。

    【讨论】:

    • 谢谢。我也遇到过这个问题。通过删除我的数据库解决
    【解决方案3】:

    由于该表已经存在,您需要在执行迁移之前将其删除/移除。

    使用 SQLite 数据库浏览器 (http://sourceforge.net/projects/sqlitebrowser/) 可以轻松地使用 GUI。

    单击带有 Table-X 图标的按钮。选择用户表点击删除。

    然后运行rake db:migrate

    啪啪啪啪啪

    【讨论】:

      【解决方案4】:

      我遇到了同样的问题,几个小时后我终于找到了解决方案

      我放了 def self.up

      create_table :用户做|t|

      降级 下拉:用户 结尾 结束

      然后制作 rake db:migrate 和 Magic !!!!

      【讨论】:

        【解决方案5】:

        我有类似的问题,然后我做到了 => rake db:drop => rake db:create => rake db:migrate

        完美运行。

        但如果它不起作用,我们可以尝试类似的方法

        ActiveRecord::Migration.drop_table('users')

        ActiveRecord::Migration.create_table('users')

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-02-05
          • 1970-01-01
          • 1970-01-01
          • 2012-02-05
          • 2014-09-17
          • 2017-01-07
          • 2013-04-17
          • 2013-11-28
          相关资源
          最近更新 更多