Elixir / Ecto / Postgres 试图从查询中获取整数但却获取字符列表?

Elixir / Ecto / Postgres trying to get integer from query but get char list instead?

这似乎是世界上最简单的事情,但我正在尝试从 ecto 查询中获取返回的整数:

iex(10)> num = Polo.Repo.all(from n in Polo.Account.Number, select: max(n.account))
[debug] QUERY OK source="account_numbers" db=3.0ms queue=0.1ms
SELECT max(a0."account") FROM "account_numbers" AS a0 []
[7024184]

iex(11)> IO.inspect(num)
[7024184]
[7024184]

iex(12)> IO.puts(num)
** (ArgumentError) argument error
   (stdlib) :io.put_chars(:standard_io, :unicode, [[7024184], 10])

iex(12)> num + 1
** (ArithmeticError) bad argument in arithmetic expression
    :erlang.+([7024184], 1)

正确的数字实际上是 7024184,但由于某种原因,它没有作为整数返回。它似乎是一个字符列表。

如有任何帮助,我们将不胜感激!

运行 最新 Elixir 1.4.4

Repo.all 总是 returns 一个列表。由于您选择的是一个整数,因此您会得到一个整数列表。

如果只想得到一个值,可以使用Repo.one:

num = Polo.Repo.one(from n in Polo.Account.Number, select: max(n.account))
# num should be just the integer `7024184` now