Saltar al contenido

ERROR: no se ha seleccionado ningún esquema para crear en

Intenta entender el código bien previamente a aplicarlo a tu proyecto si tquieres aportar algo puedes compartirlo con nosotros.

Solución:

Esto sucede al no tener USAGE privilegio en cualquiera de los esquemas de search_path. Por defecto el pseudo-rol public (todos los usuarios) tiene este privilegio en el publicesquema, por lo que este error ocurre solo después de revocarlo explícitamente con:

revoke usage on schema public from public;

Esto es necesario cuando no es deseable que las personas echen un vistazo a los esquemas de otras personas, incluso sin seleccionar datos de las tablas (que se otorga a través de diferentes privilegios).

Si esto REVOKE no se ha hecho en esa base de datos, puede haber ocurrido en la base de datos de plantilla mediante la cual se modelan nuevas bases de datos (ver CREATE DATABASE).


Cuando un usuario tiene USAGE privilegio, pero carece CREATE privilegio en el esquema, es un error diferente al intentar crear un objeto: permiso denegado para el esquema público.

Para verificar los privilegios dentro de psql, use dn+ public.

Por defecto (se muestra con pantalla extendida x para la legibilidad):

# dn+ public
List of schemas
-[ RECORD 1 ]-----+-----------------------
Name              | public
Owner             | postgres
Access privileges | postgres=UC/postgres
                  | =UC/postgres
Description       | standard public schema

falta de un nombre de rol antes = significa que es para todos los roles (=público)

Sin privilegio de USO público

Name              | public
Owner             | postgres
Access privileges | postgres=UC/postgres
                  | =C/postgres
Description       | standard public schema

Sin privilegios públicos USO o CREAR

Name              | public
Owner             | postgres
Access privileges | postgres=UC/postgres
Description       | standard public schema

Tenía un archivo pgdump con la creación de funciones en un esquema personalizado y quería cambiar el nombre del esquema personalizado al público en general y reemplacé todas las ocurrencias con el esquema antiguo para vaciarlas (por ejemplo, myschema.tablename a tablename) y comencé a recibir un error

ERROR:  no schema has been selected to create in

Para mi caso, el error ocurre cuando al comienzo de la línea actual de volcado

SELECT pg_catalog.set_config('search_path', '', false);

He cambiado el segundo argumento a “público”

SELECT pg_catalog.set_config('search_path', 'public', false);

Y el problema se fue

He probado varias soluciones y sigo recibiendo el mismo error una y otra vez.

Peor aún, el error me aparece cuando necesitaba reiniciar la migración de mi base de datos eliminando el esquema público y después de crearlo nuevamente.

La solución fue:

grant usage on schema public to public;
grant create on schema public to public;

Comentarios y valoraciones del tutorial

Agradecemos que quieras añadir valor a nuestra información participando con tu experiencia en los comentarios.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *