Estoy usando PostgreSQL 9.0.3 en RedHat. La base de datos contiene dos esquemas, public
y wh
. Creé un nuevo rol llamado django
. Quiero que este usuario use el esquema wh
ya que es el predeterminado.El camino de búsqueda de PostgreSQL no funciona como se anunció
Siguiendo el manual, lo hice:
ALTER USER django SET SEARCH_PATH TO wh, public;
Esto parece funcionar:
SHOW SEARCH_PATH;
search_path
-------------
wh, public
Sin embargo, si luego hacer un \dt
, sólo se muestran las tablas del esquema público. En el manual, cambiar la ruta de búsqueda debería tener un efecto inmediato, y debería poder acceder a las tablas wh
sin un prefijo, pero este no es el caso. El inicio y cierre de sesión conserva los cambios en search_path
, pero no muestra ningún cambio de comportamiento.
¿Qué me estoy perdiendo?
Hola Erwin, ¡Esto funcionó! Es muy extraño para mí que otorgarle un superusuario a este rol no lo logró. Sin embargo, la concesión explícita en el esquema hace que el comportamiento sea correcto. Muchas gracias y gracias a todos los que contribuyeron. – talonsensei
Al consultar una tabla sin calificación de esquema como 'SELECT id FROM mytable', PG dirá' relation 'mytable' does exists', lo cual es un poco engañoso ya que sabes que existe, pero tal vez simplemente no tienes acceso. Por lo tanto, cuando consulte la tabla con un nombre de esquema apropiadamente calificado como 'SELECT id FROM myschema.mytable;' obtendrá el mensaje: 'permission denied for schema ..' que señala claramente un' USO GRANT EN ESQUEMA .. 'declaración es necesaria. Esta es solo una razón más por la que es una buena idea usar nombres de esquema totalmente calificados en consultas. –
Hola Erwin, gracias por la solución, ¡me has salvado! :-) y gracias a talonsensei por iniciar la pregunta aquí :-) – shahjapan