Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 在循环中生成记录时,它们的顺序不正确。这是长生不老药还是后遗症?_Elixir_Ecto - Fatal编程技术网

Elixir 在循环中生成记录时,它们的顺序不正确。这是长生不老药还是后遗症?

Elixir 在循环中生成记录时,它们的顺序不正确。这是长生不老药还是后遗症?,elixir,ecto,Elixir,Ecto,我正在为测试生成一些数据 posts = for i <- 0..10 do :timer.sleep 100 {:ok, post} = Post.changeset(%Post{},%{title: "Some Post #{i}"}) |> Repo.insert post.title end |> Enum.reverse all_posts = Repo.all(from p in Post, order_by: [desc: :inserted_at])

我正在为测试生成一些数据

posts = for i <- 0..10 do
  :timer.sleep 100
  {:ok, post} = Post.changeset(%Post{},%{title: "Some Post #{i}"}) |> Repo.insert
  post.title
end |> Enum.reverse
all_posts = Repo.all(from p in Post, order_by: [desc: :inserted_at]) |> Enum.map(&(&1.title))
assert all_posts == posts
如果我把睡眠时间提高到1000毫秒,那么它就可以工作了,但是在没有任何睡眠的情况下它应该真的可以工作,对吗?这是博士后还是长生不老药。还是我不明白循环在长生不老药中的作用?它们是按顺序生成和保存的,对吗

编辑:它看起来像是在数据库中插入了一个erl时间

INSERT INTO "posts" ("inserted_at", "updated_at", ...) 
VALUES ($1, $2, ...) 
RETURNING "id" [{{2016, 8, 15}, {7, 21, 50, 0}}, {{2016, 8, 15}, {7, 21, 50, 0}}, ...] query=1.2ms

所以在这种情况下,你只能得到第二个精度。有什么办法可以解决这个问题,除了按插入的地址和id排序(这似乎有些草率)

彼得,你这个英俊的魔鬼。您可以通过将:usec bool切换为true来修复此问题


DEF模块Post do
模式“posts”做什么
时间戳(usec:true)
结束
结束

一次插入在数据库中需要多长时间?在这个
posts
表上是否有一些重触发器或检查或类似的内容?@JustMichael有4个索引,但是所有这些记录都是相同的,因此它们受到的影响是相同的。我认为问题出在外太空。如果exto.DateTime插入erl时间戳,则它们仅精确到秒。这对我来说似乎是个错误。我检查了ecto时间戳是否有毫秒,但显然没有,所以你可能是对的。@JustMichael是的,这对我来说似乎是个大问题。我不太在乎它们被拉出后以毫秒的精度表示,但是它们应该至少可以在正确的插入时间上进行排序。对于EXTOM时间戳,有一个选项
usec
,尝试使用它。以下是信息->
INSERT INTO "posts" ("inserted_at", "updated_at", ...) 
VALUES ($1, $2, ...) 
RETURNING "id" [{{2016, 8, 15}, {7, 21, 50, 0}}, {{2016, 8, 15}, {7, 21, 50, 0}}, ...] query=1.2ms