gpt4 book ai didi

ruby-on-rails - Rails:PG::UndefinedTable:错误:关系 "..."不存在

转载 作者:行者123 更新时间:2023-11-29 11:20:05 26 4
gpt4 key购买 nike

在迁移时,我收到以下错误消息:

PG::UndefinedTable: ERROR:  relation "actioncodes" does not exist
: ALTER TABLE "organizations" ADD CONSTRAINT "fk_rails_4ecaa2493e"
FOREIGN KEY ("actioncode_id")
REFERENCES "actioncodes" ("id")

我有以下组织迁移文件:

class CreateOrganizations < ActiveRecord::Migration
def change
create_table :organizations do |t|
t.string :name, null: false, limit: 40
t.references :actioncode, index: true, foreign_key: true
t.boolean :activated
t.datetime :activated_at

t.timestamps null: false
end
end
end

对于 Actioncodes,我有迁移文件:

class CreateActioncodes < ActiveRecord::Migration
def change
create_table :actioncodes do |t|
t.string :code, null: false, limit: 20
t.string :description, limit: 255

t.timestamps null: false
end
end
end
class AddIndexToActioncodesCode < ActiveRecord::Migration
def change
add_index :actioncodes, :code, unique: true
end
end

组织模型文件包括:belongs_to :actioncode

虽然 Action 代码模型文件包括:has_many :organizations

知道是什么导致了错误消息吗?

如果我从迁移文件中删除 index: true, foreign_key: true,它会顺利迁移。当我用不正确的行 t.references :actioncode_id, index: true, foreign_key: true 替换该行时,它给出了下面的错误,其中最后一行(“ids”)暗示 Rails 不知何故对表的名称有疑问吗?

PG::UndefinedTable: ERROR:  relation "actioncode_ids" does not exist
: ALTER TABLE "organizations" ADD CONSTRAINT "fk_rails_604f95d1a1"
FOREIGN KEY ("actioncode_id_id")
REFERENCES "actioncode_ids" ("id")

最佳答案

之所以会出现此问题,是因为 CreateOrganizations 迁移在 CreateActioncodes 执行之前运行。

CreateActioncodes 将首先运行,从而确保 action codes 表存在。

迁移的运行顺序基于迁移的时间戳 - 如文件名所示。 20141014183645_create_users.rb 将在 20141014205756_add_index_to_users_email.rb 之前运行,因为第二个时间戳 - 20141014205756 在第一个 - 之后20141014183645

确保 CreateOrganizations 迁移的时间戳在 CreateActioncodes 迁移的时间戳之后。

您可以手动更改文件名中的时间戳。或者删除这些迁移文件,并按照正确的顺序创建它们。

关于ruby-on-rails - Rails:PG::UndefinedTable:错误:关系 "..."不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30290250/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com