$ rake db:migrate发生错误,此更新和所有后续迁移都已取消

问题描述 投票:7回答:5

我是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
5个回答
7
投票

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”可能会导致问题。可能这是相关的。


7
投票

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

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

rake db:drop:all擦拭一切然后再次运行rake db:migrate应解决问题。

祝好运


1
投票

由于该表已存在,因此您需要在执行迁移之前删除/删除它。

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

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

然后运行rake db:migrate

巴达热潮bada bing


0
投票

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

我把def self.up

create_table:用户做| t |

def down drop_down:用户结束

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


0
投票

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

工作得很好。

以上解决方案似乎模糊不清

我发现了这个

我们可以做点什么

的ActiveRecord :: Migration.drop_table( '用户')

© www.soinside.com 2019 - 2024. All rights reserved.