я решил что раз вы схему не пишите значит таблица лежит в схеме public
на схеме публик нет, я ее вообще не юзаю
а как вы доступ к таблице получаете по короткому имени? меняете дефолтный search_path?
у меня фишка, что разные пользователи имеют доступ к разным схемам, которые есть клоны по метаданным. То есть каждый пользователь должен иметь доступ только ко своей схеме
а, у вас имя схемы совпадает с именем пользователя?
А кто устанавливает то путь поиска как вам выше написали
вот именно, что решил переименовать пользователя, чтоб он не совпадал со схемой, схема bash, решил пользователя переименовать в bash_user - после этого и началось...
так этож разные имена :-) bash и bash_user
к меня програма в зависимости от имени пользователя должна работать с разными схемами, и что-то пошло не так
И что для этого делает программа? Нет зависимости схемы и пользователя в pg
ну так разве имя схемы и имя пользователя не должны синтаксисом команд разделяться? Я ж не могу, где нужно имя схемы подставить имя пользователя?
программа подставляет имя пользователя, логинится с ним и без указания схемы должна работать с той схемой , с которой сопоставлен пользователь. Это было изначально сделано и хорошо работало, но после переименования пользователя все съехало.
Как сопоставлен?
сам по себе postgres не будет искать таблицу в какой-то схеме, он ищет по пути заданном в search_path, по дефолту он такой: postgres=# show search_path ; search_path ----------------- "$user", public $user — это плейсхолдер для текущего имени пользователя. то есть в запросе select * from cas под пользователем bash_user postgres будет искать таблицу bash_user.cas, public.cas, если таких нет то напишет ошибку что таблица не существует
реально???? Это из-за этого?
если вы search_path не меняете то он будет искать только в username и в public, угу
Обсуждают сегодня