gpt4 book ai didi

postgresql - 设置事务隔离级别时的 Phoenix/Elixir 测试

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

我有一段代码看起来像这样:

Repo.transaction(fn ->
Repo.query!("set transaction isolation level serializable;")

# do some queries

end)

在我的测试套件中,我不断遇到错误:

(Postgrex.Error) ERROR 25001 (active_sql_transaction): SET TRANSACTION ISOLATION LEVEL must be called before any query

我想知道我是否做错了根本性的事情,或者我是否遗漏了有关测试环境的某些内容。

谢谢!

最佳答案

不确定您是否仍在寻找这个问题的答案,但我找到了一个很好的解决方案。对于我有这样的设置 block 的情况:

setup tags do
:ok =
if tags[:isolation] do
Sandbox.checkout(Repo, isolation: tags[:isolation])
else
Sandbox.checkout(Repo)
end

unless tags[:async] do
Sandbox.mode(Repo, {:shared, self()})
end

:ok
end

然后在可序列化事务路径中的测试上,您必须像这样用“可序列化”标记它:

@tag isolation: "serializable"
test "my test" do
...
end

这将让您运行在路径中遇到可序列化的测试并且仍然使用沙箱。

关于postgresql - 设置事务隔离级别时的 Phoenix/Elixir 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54169171/

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