Elixir 查询中的模型源中不存在“where”中的字段“Struct”

Elixir 查询中的模型源中不存在“where”中的字段“Struct”,elixir,ecto,Elixir,Ecto,使用有很多问题,而且属于,我有以下两种模式: @primary_key {:guid, :integer, []} schema "characters" do field :name, :string field :race, :integer field :class, :integer field :gender, :integer field :level, :integer field :xp, :integer fiel

使用
有很多问题,而且
属于
,我有以下两种模式:

  @primary_key {:guid, :integer, []}
  schema "characters" do
    field :name, :string
    field :race, :integer
    field :class, :integer
    field :gender, :integer
    field :level, :integer
    field :xp, :integer
    field :money, :integer
    field :online, :integer
    field :totaltime, :integer
    field :leveltime, :integer
    field :rest_bonus, :float
    field :is_logout_resting, :integer
    field :honor_highest_rank, :integer
    field :honor_standing, :integer
    field :stored_honor_rating, :float
    field :stored_dishonorable_kills, :integer
    field :stored_honorable_kills, :integer
    field :health, :integer
    field :power1, :integer
    field :power2, :integer
    field :power3, :integer
    field :power4, :integer
    field :power5, :integer
    belongs_to :account, Pugit.Account, references: :id
  end
这个账户模式呢

 schema "account" do
    field :username, :string
    field :sha_pass_hash, :string
    field :gmlevel, :integer, default: 0
    field :sessionkey, :string
    field :v, :string
    field :s, :string
    field :email, :string
    field :joindate, Ecto.DateTime
    field :last_ip, :string, default: "0.0.0.0"
    field :failed_logins, :integer, default: 0
    field :locked, :integer, default: 0
    field :last_login, Ecto.DateTime
    field :active_realm_id, :integer, default: 0
    field :expansion, :integer, default: 0
    field :mutetime, :integer, default: 0
    field :locale, :integer, default: 0

    has_many :characters, PugitWow.Character, foreign_key: :account
  end
我正在尝试运行此查询:

Pugit.AccountRepo.all(Pugit.Account) |> Pugit.CharRepo.preload([:characters])
这里唯一的区别是,可能我正在尝试从不同的repo(其他数据库)预加载

但我得到了这个错误:

** (Ecto.QueryError) deps/ecto/lib/ecto/association.ex:320: field `Pugit.Character.account` in `where` does not exist in the model source in query:

from c in Pugit.Character,
  where: c.account in ^[1, 2, 3, 4, 21],
  order_by: [asc: c.account]

    (elixir) lib/enum.ex:1473: Enum."-reduce/3-lists^foldl/2-0-"/3
    (elixir) lib/enum.ex:1151: Enum."-map_reduce/3-lists^mapfoldl/2-0-"/3
      (ecto) lib/ecto/repo/queryable.ex:91: Ecto.Repo.Queryable.execute/5
      (ecto) lib/ecto/repo/queryable.ex:15: Ecto.Repo.Queryable.all/4
    (elixir) lib/enum.ex:1088: Enum."-map/2-lists^map/1-0-"/2
任何信息都很好,谢谢

我的
字符表的主键是
guid

我的
字符
表的外键是
帐户


my
account
表的主键是
id

发生这种情况是因为您的
account
关联使用与外键字段相同的名称,
account
。将该字段重命名为
account\u id
,然后将其用作您的关联:

belongs_to :account, Pugit.Account

为什么在
所属:帐户
中有
定义字段:false
?如果你删除了它,这行得通吗?@Dogbert不,很遗憾,我补充说,当我试图让它工作时,数据库中的
字符
表是否有
account
字段或
account\u id
?@Dogbert在我的主要问题try
属于:account的最底部看到我的编辑,Pugit.Account,references::id,foreign_key::Account
但我不确定是否可以将外键与关系相同。