首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Heroku部署失败

Heroku部署失败
EN

Stack Overflow用户
提问于 2017-07-27 22:42:14
回答 2查看 79关注 0票数 0

我正试图在heroku第一次部署我的应用程序,我遇到了一个奇怪的bug。当我尝试运行heroku :migrate时,我看到了以下错误:

拉克流产了!StandardError:发生了一个错误,随后的迁移都被取消了:

代码语言:javascript
运行
复制
PG::UndefinedTable: ERROR:  relation "companies" does not exist
: CREATE TABLE "users" ("id" bigserial primary key, "admin" boolean DEFAULT 'f', "admin_c" boolean DEFAULT 'f', "color" character varying, "initial" character varying, "name" character varying, "surname" character varying, "pseudo" character varying, "step" integer, "company_id" bigint, "email" character varying DEFAULT '' NOT NULL, "encrypted_password" character varying DEFAULT '' NOT NULL, "reset_password_token" character varying, "reset_password_sent_at" timestamp, "remember_created_at" timestamp, "sign_in_count" integer DEFAULT 0 NOT NULL, "current_sign_in_at" timestamp, "last_sign_in_at" timestamp, "current_sign_in_ip" character varying, "last_sign_in_ip" character varying, "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL, CONSTRAINT "fk_rails_7682a3bdfe"
FOREIGN KEY ("company_id")
  REFERENCES "companies" ("id")
)

我已经验证了上千次我的迁移文件用户&公司,但没有什么似乎是坏的。所以我真的不知道该怎么做。我也尝试了所有的数据库重置等等。例如,在这个answer中。但没什么对我有用的。有人见过这个吗??我现在真的很绝望。

PS:我还删除了使pg和sql3更改。

因此,我给出了我的代码,如果它可以帮助发现问题。

Company_model:

代码语言:javascript
运行
复制
class Company < ApplicationRecord
  has_many :users, dependent: :destroy
  has_many :groups, dependent: :destroy
end

User_model:

代码语言:javascript
运行
复制
class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  belongs_to :company, optional: true

  has_many :users_group, dependent: :destroy
  has_many :groups, through: :users_group
  has_many :users_post, dependent: :destroy
  has_many :posts, through: :users_post
  has_many :tasks_users, dependent: :destroy
  has_many :tasks, through: :tasks_users

  has_many :requests, dependent: :destroy
  has_many :groupes_admin, dependent: :destroy
  has_many :posts, dependent: :destroy
  has_many :comments, dependent: :destroy
  has_many :tasks, dependent: :destroy

end

公司迁移:

代码语言:javascript
运行
复制
class CreateCompanies < ActiveRecord::Migration[5.1]
  def change
    create_table :companies do |t|
      t.string :name
      t.string :ref

      t.timestamps
    end
  end
end

设计移徙方案:

代码语言:javascript
运行
复制
class DeviseCreateUsers < ActiveRecord::Migration[5.1]
  def change
    create_table :users do |t|
      ## Database authenticatable
      t.boolean :admin, default: false
      t.boolean :admin_c, default: false
      t.string :color
      t.string :initial
      t.string :name
      t.string :surname
      t.string :pseudo
      t.integer :step

      t.references :company, index: true, foreign_key: true
      t.boolean :admin, default: false
      t.string :email,              null: false, default: ""
      t.string :encrypted_password, null: false, default: ""

      ## Recoverable
      t.string   :reset_password_token
      t.datetime :reset_password_sent_at

      ## Rememberable
      t.datetime :remember_created_at

      ## Trackable
      t.integer  :sign_in_count, default: 0, null: false
      t.datetime :current_sign_in_at
      t.datetime :last_sign_in_at
      t.string   :current_sign_in_ip
      t.string   :last_sign_in_ip

      t.timestamps null: false
    end

    add_index :users, :email,                unique: true
    add_index :users, :reset_password_token, unique: true
  end
end

模式:

代码语言:javascript
运行
复制
ActiveRecord::Schema.define(version: 20170727071936) do

  create_table "comments", force: :cascade do |t|
    t.string "content"
    t.boolean "done"
    t.integer "post_id"
    t.integer "user_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["post_id"], name: "index_comments_on_post_id"
    t.index ["user_id"], name: "index_comments_on_user_id"
  end

  create_table "companies", force: :cascade do |t|
    t.string "name"
    t.string "ref"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

  create_table "groupes_admins", force: :cascade do |t|
    t.integer "user_id"
    t.integer "group_id"
    t.index ["group_id"], name: "index_groupes_admins_on_group_id"
    t.index ["user_id"], name: "index_groupes_admins_on_user_id"
  end

  create_table "groups", force: :cascade do |t|
    t.string "name"
    t.integer "cat"
    t.boolean "main"
    t.boolean "perso"
    t.integer "effectif", default: 0
    t.integer "elm", default: 0
    t.integer "elm_d", default: 0
    t.integer "date_cat"
    t.integer "date_id"
    t.datetime "date"
    t.integer "company_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["company_id"], name: "index_groups_on_company_id"
  end

  create_table "posts", force: :cascade do |t|
    t.text "content"
    t.boolean "attached"
    t.integer "attached_cat"
    t.integer "attached_id"
    t.boolean "done"
    t.datetime "done_at"
    t.integer "done_cat"
    t.integer "donner_id"
    t.datetime "upd_at"
    t.integer "upd_cat"
    t.integer "updater_id"
    t.string "title"
    t.date "deadline"
    t.integer "group_id"
    t.integer "user_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["group_id"], name: "index_posts_on_group_id"
    t.index ["user_id"], name: "index_posts_on_user_id"
  end

  create_table "requests", force: :cascade do |t|
    t.integer "user_id"
    t.integer "group_id"
    t.datetime "validate_at"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["group_id"], name: "index_requests_on_group_id"
    t.index ["user_id"], name: "index_requests_on_user_id"
  end

  create_table "subtasks", force: :cascade do |t|
    t.string "title"
    t.datetime "date"
    t.boolean "finished"
    t.datetime "done_at"
    t.integer "done_id"
    t.integer "assign_id"
    t.integer "task_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["task_id"], name: "index_subtasks_on_task_id"
  end

  create_table "tasks", force: :cascade do |t|
    t.integer "user_id"
    t.integer "group_id"
    t.integer "post_id"
    t.string "title"
    t.datetime "date"
    t.boolean "done"
    t.integer "doner_id"
    t.datetime "done_at"
    t.boolean "assigned"
    t.integer "elm", default: 0
    t.integer "elm_d", default: 0
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["group_id"], name: "index_tasks_on_group_id"
    t.index ["post_id"], name: "index_tasks_on_post_id"
    t.index ["user_id"], name: "index_tasks_on_user_id"
  end

  create_table "tasks_users", force: :cascade do |t|
    t.integer "task_id"
    t.integer "user_id"
    t.index ["task_id"], name: "index_tasks_users_on_task_id"
    t.index ["user_id"], name: "index_tasks_users_on_user_id"
  end

  create_table "users", force: :cascade do |t|
    t.boolean "admin", default: false
    t.boolean "admin_c", default: false
    t.string "color"
    t.string "initial"
    t.string "name"
    t.string "surname"
    t.string "pseudo"
    t.integer "step"
    t.integer "company_id"
    t.string "email", default: "", null: false
    t.string "encrypted_password", default: "", null: false
    t.string "reset_password_token"
    t.datetime "reset_password_sent_at"
    t.datetime "remember_created_at"
    t.integer "sign_in_count", default: 0, null: false
    t.datetime "current_sign_in_at"
    t.datetime "last_sign_in_at"
    t.string "current_sign_in_ip"
    t.string "last_sign_in_ip"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["company_id"], name: "index_users_on_company_id"
    t.index ["email"], name: "index_users_on_email", unique: true
    t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
  end

  create_table "users_groups", force: :cascade do |t|
    t.integer "user_id"
    t.integer "group_id"
    t.index ["group_id"], name: "index_users_groups_on_group_id"
    t.index ["user_id"], name: "index_users_groups_on_user_id"
  end

  create_table "users_posts", force: :cascade do |t|
    t.integer "post_id"
    t.integer "user_id"
    t.index ["post_id"], name: "index_users_posts_on_post_id"
    t.index ["user_id"], name: "index_users_posts_on_user_id"
  end

end
EN

回答 2

Stack Overflow用户

发布于 2017-07-29 14:55:47

错误消息表明您试图在companies表上创建对users表的引用,但是companies表还不存在。尝试确保迁移的顺序是在companies之前创建的。您还可以尝试一次性加载模式,而不是每次使用heroku run rake db:schema:load迁移一个模式。

免责声明:rake db:schema:load将删除您的所有数据。它最好用于建立一个新的数据库。千万不要对已经包含关键数据的生产数据库运行它。一旦您有了数据,您将需要执行增量迁移。

票数 0
EN

Stack Overflow用户

发布于 2017-07-27 22:45:05

首先使用rake db:create创建数据库。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45362171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档