gpt4 book ai didi

Elixir Ecto : How do I create a self-referential foreign key?

转载 作者:行者123 更新时间:2023-12-01 11:26:59 27 4
gpt4 key购买 nike

在 Ecto 迁移中实现引用自己表的外键的正确方法是什么?

例如我想创建一个表,其中任何行都可以引用同一个表中的“父”行。 (一种处理分层数据的方法;还有许多其他方法。)

但是当我在我的变更集中有这个时,我在运行 mix ecto.migrate 时会遇到很多错误:

create_if_not_exists table(:perms, prefix: :accts) do
add :title, :string, size: 64, null: false
add :description, :text
add :parent_id, :integer, references(:perms)
end

错误消息以 (UndefinedFunctionError) undefined function Ecto.Migration.Reference.fetch/2 (Ecto.Migration.Reference does not implement the Access behaviour) 开头在 GenServer 终止之前。 (这发生在 ecto 1.1.5 和 2.0.0-beta2 下。)

最佳答案

答案是一个简单的错误:尝试为外键列指定列类型会导致错误。正确的语法是(注意缺少的 :integer 原子):

create_if_not_exists table(:perms, prefix: :accts) do
add :title, :string, size: 64, null: false
add :description, :text
add :parent_id, references(:perms)
end

关于Elixir Ecto : How do I create a self-referential foreign key?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36539868/

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