@MishaXXL

Для чего делают таблицы public?

Столкнулся с ситуацией, когда запрос SELECT * FROM users; не сработал
А работает он только через SELECT * FROM public."users";

Для чего создают таблицы типа паблик?
  • Вопрос задан
  • 281 просмотр
Решения вопроса 1
TaHKucT
@TaHKucT
Linux администратор
public - это схема по умолчанию в терминалогии PG. Использовать разные схемы можно по разному, например создать схемы wp и zb в одной базе, и в wp.users хранить пользователей условного wordpress'а, а в zb.users условного zabbix'а (или подставьте любые другие приложения). Можно же создать схемы users и orders и в users.contacts хранить контактные данные пользователей, в users.names их ФИО, в orders.current текущие заказы, в orders.completed выполненые заказы и тп. В общем случае можно использовать как хотите, сам PG ни к чему не обязывает и многие эти схемы не используют(всмысле используют стандартную схему public не акцентируя на этом внимание).

Почему "SELECT * FROM users" мог не сработать: вероятно у вас где-то изменена схема по умолчанию с public на что-то другое. Это можно проверить командой "SHOW search_path"(обычно она выглядит так):
postgres=# SHOW search_path;
   search_path
-----------------
 "$user", public
(1 row)
postgres=#

Изменить search_path можно на стороне клиента, например "--search_path=new_search_path" в случае обычного psql, или на стороне сервера командой "ALTER ROLE SET search_path TO ;"

Подробней про это можно, например, в документации postgrespro почитать
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы