【问题标题】:Is it possible to alter schema of a database I am not connected to?是否可以更改我未连接到的数据库的架构?
【发布时间】:2018-07-10 17:47:52
【问题描述】:

是否可以更改我未连接到的数据库的架构?更具体地说,我需要更改架构的所有者(但对于问题而言这并不重要)。

正如documentation 所说,可以使用以下子句更改模式:

ALTER SCHEMA name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }

它确实有效,但仅适用于我当前连接的数据库

当然,我可以重新连接到另一个数据库并手动完成,但我很感兴趣是否可以通过连接到另一个(通常是postgres)数据库来完成。这对自动化流程非常有帮助。

我尝试过类似的方法:

ALTER DATABASE ALTER SCHEMA name OWNER TO ...
ALTER SCHEMA "db_name".name OWNER TO ...

但没有成功 - 所以我很感兴趣是否有可能。

我尝试使用一个流行的搜索引擎和 StackOverflow 搜索功能搜索此信息。不成功 - 因此问题。

【问题讨论】:

  • 看起来这个帖子可能有一个解决方法:stackoverflow.com/questions/10335561/…
  • @JacobH:谢谢你指点我。我现在实际上已经使用了psql $PG_DATABASE -c "ALTER SCHEMA \"public\" OWNER TO $PG_USER"; 的解决方法。我对它是否可能更感兴趣,所以我将来可以使用它:)
  • 在 SQL Server 中,您可以使用USE [Database],但由于 Postgres 没有等效项,我认为解决方法可能是唯一的选择。也许另一个用户有不同的方法。
  • 不,这是不可能的。您只能访问您连接到的数据库中的对象。如果你想在不同的数据库中做某事,你需要连接到那个数据库。
  • 感谢@a_horse_with_no_name 的回复。你所说的实际上会给出自己的答案。

标签: sql postgresql


【解决方案1】:

正如@a_horse_with_no_name 和@JacobH 在 cmets 中指出的那样不可能更改您当前未连接到的数据库的架构。

所以我最终使用了这样的命令来实现架构更改:

psql $PG_DATABASE -c "ALTER SCHEMA \"<schema-name>\" OWNER TO $PG_USER";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-29
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    • 1970-01-01
    • 2012-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多