我在名为“isvalidoption”的模式中有一个“公共”模式和简单函数。
做了什么:
- 使用 pg_dump 备份模式;
- 将架构重命名为“开发”;
- 创建新模式“公共”;
- 使用 pg_restore 从备份恢复它。
问题:
- 当我从任何省略模式前缀的表中进行选择时,例如“SELECT * FROM mytable;” 没关系
- 当我运行带有像“SELECT public.isvalidoption();”这样的模式前缀的函数时 或者 'SELECT development.isvalidoption()' 就可以了;
- 当我运行省略架构前缀的函数时,如“SELECT isvalidoption();” 我收到错误:函数 isvalidoption 的权限被拒绝
用户在两个模式上都有 USAGE,在两个模式中都有 EXECUTE 函数,他也是两个模式中函数的所有者。
PostgreSQL 版本为 9.6.1。
'选择当前用户;' 显示正确的用户。
'显示搜索路径;' 显示 '"$user", public'。
有任何想法吗?