Postgresql ActiveRecord:“;uuid ossp“;添加了扩展,但没有可用的uuid函数

Postgresql ActiveRecord:“;uuid ossp“;添加了扩展,但没有可用的uuid函数,postgresql,activerecord,ruby-on-rails-5,postgresql-extensions,Postgresql,Activerecord,Ruby On Rails 5,Postgresql Extensions,使用rails-5.0.7.1(根据捆绑显示rails) 我编写了一个迁移,它添加了“uuid ossp”扩展,SQL被执行,当我在psql控制台中键入\dx时,扩展就会显示出来。但是,当我键入\df时,此扩展提供的函数(如uuid\u generate\u v4)不会显示,因此任何使用应添加函数的尝试都会失败 当我从ActiveRecord迁移中获取SQL并将其直接复制并粘贴到psql控制台时,一切都按预期工作—添加了扩展,并且功能可用 这是我的迁移代码: class EnableUuidOs

使用
rails-5.0.7.1
(根据
捆绑显示rails

我编写了一个迁移,它添加了
“uuid ossp”
扩展,SQL被执行,当我在
psql
控制台中键入
\dx
时,扩展就会显示出来。但是,当我键入
\df
时,此扩展提供的函数(如
uuid\u generate\u v4
)不会显示,因此任何使用应添加函数的尝试都会失败

当我从ActiveRecord迁移中获取SQL并将其直接复制并粘贴到
psql
控制台时,一切都按预期工作—添加了扩展,并且功能可用

这是我的迁移代码:
class EnableUuidOssp
以下是输出:

$ bundle exec rake db:migrate
== 20190308113821 EnableUuidOssp: migrating ==============================
-- enable_extension("uuid-ossp")
   -> 0.0075s
== 20190308113821 EnableUuidOssp: migrated (0.0076s) =====================
^这一切似乎都已成功运行,但未启用任何功能。这意味着未来的SQL将包含
。。。SET uuid=uuid\u generate\u v4()…
失败,出现此错误
提示:并没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。

什么有效 直接进入
psql
并键入:

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
^这将安装扩展并使功能可用

然而,什么不起作用 好的,如果我使用上面的SQL并以这种方式重写迁移:

。。。
定义

执行我假设安装扩展的架构不在您的
搜索路径上

您可以使用

\dx "uuid-ossp"

尝试使用模式限定函数,如
public.uuid\u generate\u v4()

傻我--谢谢。完全可以工作,但是当我键入
\df
时,我没有指定模式,所以我只认为函数不可用。在这段时间里,由于混合了此迁移的几个不同版本,我没有正确安装扩展,也没有同时在正确的架构上查看生成的函数。感谢
public.uuid\u generate\u v4()
tip!