【问题标题】:migrate is not running迁移未运行
【发布时间】:2017-11-26 20:36:07
【问题描述】:

我创建了一个名为 user 的模型,在 timestamp_create_users.rb (其中 timestamp = long number )中我有以下内容:

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|

      t.integer :userNum, :limit => 7
      t.string :username, :limit => 32
      t.string :fname, :limit => 40
      t.string :surname, :limit => 40
      t.string :email, :limit => 50
      t.string :kNum, :limit => 8
      t.string :password, :limit => 80
      t.boolean :isTeacher, :default => false
      t.timestamps null: false

    end
  end
end

问题是它给了我一个很长的错误信息,这里是它的标题:

rake db:migrate

== 20171126181930 CreateUsers: migrating ======================================
-- create_table(:users)
rake aborted!
StandardError: 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, "userNum" integer(7), "username" varchar(32), "fname" varchar(40), "surname" varchar(40), "email" varchar(50), "kNum" varchar(8), "password" varchar(80), "isTeacher" boolean DEFAULT 'f', "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL) 

并且 user.rb (在模型内)是空的。我做错了什么?

感谢您的宝贵时间

【问题讨论】:

  • 看起来你的 sqlite DB 已经有 users 表了。如果这是一台开发机器,您尝试过rake db:drop -> rake db:create -> rake db:migrate 吗?
  • @AnkitG 这是测试机器。我正在使用云 9
  • @AnkitG 这解决了问题。非常感谢
  • @AnkitG 如果您想将其发布为答案,我将选择它作为解决方案,以便其他人以后也可以从中受益。

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4 ruby-on-rails-3.2


【解决方案1】:

看起来您的 Sqlite DB 已经有一个 users 表。如果这是一个开发机器,你应该试试

rake db:drop
rake db:create
rake db:migrate

【讨论】:

    【解决方案2】:

    运行 rake db:setup ,它基本上运行以下所有命令,它将解决您的错误并在单个命令中设置您的应用程序

    rake db:drop
    rake db:create
    rake db:migrate
    rake db:seed 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-17
      • 2020-08-17
      • 2016-07-30
      • 1970-01-01
      • 1970-01-01
      • 2018-03-23
      • 2016-12-12
      • 2020-10-24
      相关资源
      最近更新 更多