Это поведение по умолчанию для PostgreSQL. Убедитесь, что ваш search_path
установлен правильно.
SHOW search_path;
По умолчанию должно быть:
search_path
--------------
"$user",public
См. документацию PostgreSQL о схемах для получения дополнительной информации. Конкретно эта часть:
Вы можете создать схему для каждого пользователя с тем же именем, что и у этого пользователя. Напомним, что путь поиска по умолчанию начинается с $ user, который преобразуется в имя пользователя. Поэтому, если у каждого пользователя есть отдельная схема, он получает доступ к своим собственным схемам по умолчанию.
Если вы используете эту настройку, вы также можете отозвать доступ к общедоступной схеме (или вообще удалить ее), поэтому пользователи действительно ограничены своими собственными схемами.
Обновите свой комментарий:
Вот что происходит на моей машине. Который, как я полагаю, вы хотите.
skrall=# \d
No relations found.
skrall=# show search_path;
search_path
----------------
"$user",public
(1 row)
skrall=# create schema skrall;
CREATE SCHEMA
skrall=# create table test(id serial);
NOTICE: CREATE TABLE will create implicit sequence "test_id_seq" for serial column "test.id"
CREATE TABLE
skrall=# \d
List of relations
Schema | Name | Type | Owner
--------+-------------+----------+--------
skrall | test | table | skrall
skrall | test_id_seq | sequence | skrall
(2 rows)
skrall=# select * from test;
id
----
(0 rows)
skrall=#