gpt4 book ai didi

postgresql - 用 Ecto 改变 Postgres search_path

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

我想为我的 Phoenix 应用程序使用特定的 Postgres 架构。

我试图通过 Ecto.Repo.after_connect/1 回调来实现这一点,但它似乎在超时前递归创建新的数据库连接大约 10 次。

这是我的 repo 文件:

defmodule MyApp.Repo do

use Ecto.Repo, otp_app: :my_app
use Scrivener, page_size: 20

def after_connect(_pid) do
IO.puts "after_connect"
Ecto.Adapters.SQL.query(MyApp.Repo, "SET search_path TO 'my_app';", [])
end

end

最佳答案

我认为超时的发生是因为 after_connect 在 ecto 的设置周期中还为时过早。使用 ecto 2(仍处于测试阶段)以下工作,它是否在 ecto 1 中工作取决于您是否将连接作为 after_connection 中的参数)。

在你的仓库中:

defmodule Et.Repo do
use Ecto.Repo, otp_app: :et

def set_search_path(conn, path) do
{:ok, _result} = Postgrex.query(conn, "SET search_path=#{path}", [])
end
end

在你的 config.exs 文件中:

config :et, Et.Repo,
adapter: Ecto.Adapters.Postgres,
database: "......",
username: "......",
hostname: "localhost",
after_connect: {Et.Repo, :set_search_path, ["app,public,extensions"]}

希望对您有所帮助,--Kip

关于postgresql - 用 Ecto 改变 Postgres search_path,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35131338/

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