PhpStorm - 错误:类型“hstore”不存在。

3
我使用主要的pgAdmin浏览和编辑我的PostgreSQL数据库。现在我想使用PhpStorm。 在PhpStorm中,我可以浏览我的表,但无法编辑数据。当我尝试时,会出现错误: [42704] ERROR: type "hstore" does not exist Kde: compilation of PL/pgSQL function "on_update" near line 3 函数“on_update”是更新触发器,它将旧行保存到历史表中并使用hstore类型。 PhpStorm使用postgresql-9.4-1201.jdbc4.jar驱动程序。我不知道这是驱动程序错误还是PhpStorm错误。我知道在pgAdmin中它可以工作,在PhpStorm中不能。

您需要以Postgres超级用户身份运行create extension hstore命令:https://www.postgresql.org/docs/current/static/sql-createextension.html - user330315
我已经听过这个建议了。它真的是这样吗?我的意思是...它在pgAdmin中可以工作,所以扩展已经被创建了还是没有? - Vojtěch Bartoš
错误信息很清楚:扩展未安装,而函数on_update正在使用hstore。我猜pgAdmin没有使用那个函数(无论那个函数来自哪里)。 - user330315
好的,我会尝试。谢谢您的快速回复。 - Vojtěch Bartoš
恐怕它没有起作用。我检查了我们的构建过程,它包含 CREATE EXTENSION IF NOT EXISTS hstore; 所以扩展已经安装了。 - Vojtěch Bartoš
错误消息明显与您最后的评论相矛盾。您可能已经在不同的数据库中安装了该扩展,或者它被安装在一个单独的模式中,并且该模式不在您正在使用的用户的搜索路径中。 - user330315
1个回答

3
我和Vojtěch使用相同的环境,我发现扩展确实已经创建并存在。但是在不同的模式(public)中,而不是当前连接操作的PostgreSQL search_path。PhpStorm可能存在漏洞,因为它没有尊重PostgreSQL用户的默认搜索路径。
一些解决方法(仅适用于DB控制台):
  • 在数据库控制台中,您可以使用RESET SEARCH_PATH;语句。
  • 您可以在JDBC连接上强制执行search_path,请参见question

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接