使用GORM和Postgresql如何设置search_path?

Don*_*nch 1 postgresql go go-gorm

如何从 gorm 获取当前架构?通常它是“SHOW search_path”并且是一个执行程序。与通常设置当前 search_path 相同“将 search_path 设置为 newschema”。其中新模式可以是一系列名称中的单个模式名称。

我尝试 db.Exec("show search_path").Find(&result) ,其中结果是 []string ,我得到一个空数组。

Pav*_*kov 5

search_path通过执行查询进行设置set search_path to newschema是不正确的设置方式,因为只有用于执行查询的连接才会更改此设置。

要将其设置为应用程序将使用的完整连接集,您需要将其search_path作为参数提供给gorm.Open("postgres", "dbname=YourDB search_path=YourSearchPath")您要使用的所有其他连接参数,例如dbnameportuser等。

  • @DonaldFrench 请在事务中执行它,否则当您在一个连接上运行“set”时,您可能会遇到这种情况,但实际查询将使用旧的 search_path 在另一个连接上运行。当您打开交易时,它会坚持连接,您将处于安全状态。 (2认同)