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!