Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PostgreSQL Новый топик    Ответить
 запросы ругаются на схему  [new]
Леонид33
Member

Откуда:
Сообщений: 185
Здравствуйте,

поставил PostgreSQL 13.3, сделал новую схему - TST,
добавил путь:

ALTER DATABASE "postgres" SET search_path = TST, public; - ошибок не выдало,

сделал в TST таблицу, а при селекте - ругается ,что нет такой схемы.

пытался дать права пользователю:
GRANT ALL PRIVILEGES ON SCHEMA TST to postgres;

тоже ругается, не видит схему.

этот запрос схему видит:
SELECT schema_name FROM information_schema.schemata WHERE schema_name = 'TST';

в PGAdmin схема видна, но как только какой запрос - все ,ругается - что может быть?
11 июн 21, 17:08    [22334510]     Ответить | Цитировать Сообщить модератору
 Re: запросы ругаются на схему  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1516
Леонид33
этот запрос схему видит:
SELECT schema_name FROM information_schema.schemata WHERE schema_name = 'TST';

Покажите результат этого запроса...

И вот такого:
select name, setting 
  from pg_settings
 where name = 'search_path';



А еще лучше - точную команду создания схемы приведите...
Сдается мне, где-то вы имя схемы в двойных кавычках указать умудрились
11 июн 21, 17:38    [22334528]     Ответить | Цитировать Сообщить модератору
 Re: запросы ругаются на схему  [new]
Леонид33
Member

Откуда:
Сообщений: 185
на перый запрос выдает:
TST

на второй:
name setting
search_path "$user", public


а создавал не через скритп, а правой кнопкой мыша на схемы -> создать в pgadmin.
11 июн 21, 17:45    [22334532]     Ответить | Цитировать Сообщить модератору
 Re: запросы ругаются на схему  [new]
Кесарь
Member

Откуда:
Сообщений: 653
Леонид33,

где-нить в недрах движка понимается, что TST это тестовая схема, и работа по ней прекращается :)

Попробуйте дать другое название и сравните поведение.

Сообщение было отредактировано: 11 июн 21, 17:39
11 июн 21, 17:48    [22334533]     Ответить | Цитировать Сообщить модератору
 Re: запросы ругаются на схему  [new]
Кесарь
Member

Откуда:
Сообщений: 653
Или ошибка в самом клиенте. Рецепт тот же:

создать ещё две схемы. Одну через мастер клиента, другую руками скриптом. И сравнить, как оно. Имена выбирать отличные от ТСТ.
11 июн 21, 17:57    [22334537]     Ответить | Цитировать Сообщить модератору
 Re: запросы ругаются на схему  [new]
Леонид33
Member

Откуда:
Сообщений: 185
сделал и через ИДЕ и скриптами,
все одно:

ERROR: ОШИБКА: отношение "mmus.kolob" не существует
LINE 1: select * from mmus.kolob

на это не ругается:

ALTER DATABASE "postgres" SET search_path = mmus, public;

тут тормознул: создал таблицу без указания схемы,в раблик попадла.
просто с PostgreSQL впервые общаюсь...

все, если делать скриптами, то работает, а из среды - почему-то нет...
странно...

pgadmin4 версия 5.2 - это не глючная? ставилась вместе с PostgreSQL 13.3.

Сообщение было отредактировано: 11 июн 21, 17:56
11 июн 21, 17:59    [22334538]     Ответить | Цитировать Сообщить модератору
 Re: запросы ругаются на схему  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 4785
Леонид33
сделал и через ИДЕ и скриптами,
все одно:

ERROR: ОШИБКА: отношение "mmus.kolob" не существует
LINE 1: select * from mmus.kolob

на это не ругается:

ALTER DATABASE "postgres" SET search_path = mmus, public;


а что показывает \dn+ в вашей базе?

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
11 июн 21, 18:01    [22334541]     Ответить | Цитировать Сообщить модератору
 Re: запросы ругаются на схему  [new]
Леонид33
Member

Откуда:
Сообщений: 185
повторюсь:

тут тормознул: создал таблицу без указания схемы,в раблик попадла.
просто с PostgreSQL впервые общаюсь...

все, если делать скриптами, то работает, а из среды - почему-то нет...
странно...

pgadmin4 версия 5.2 - это не глючная? ставилась вместе с PostgreSQL 13.3.

и просветите: \dn+ - это где делать?
а то я ток первый день с PostgreSQL...
11 июн 21, 18:07    [22334543]     Ответить | Цитировать Сообщить модератору
 Re: запросы ругаются на схему  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 4785
Леонид33
повторюсь:

тут тормознул: создал таблицу без указания схемы,в раблик попадла.
просто с PostgreSQL впервые общаюсь...

все, если делать скриптами, то работает, а из среды - почему-то нет...
странно...

pgadmin4 версия 5.2 - это не глючная? ставилась вместе с PostgreSQL 13.3.

и просветите: \dn+ - это где делать?
а то я ток первый день с PostgreSQL...


Всё и всегда смотриться в коммандной строке psql. ))
+ Если у вас схема действительно большими буквами указана то надо использовать синтакси from "TST".somename.


--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
11 июн 21, 18:19    [22334544]     Ответить | Цитировать Сообщить модератору
 Re: запросы ругаются на схему  [new]
Леонид33
Member

Откуда:
Сообщений: 185
я и писал большие буквы, если - делал с большими.

в итоге получаетсятакая картина:
если я делаю схемы и таблицы из среды pgadmin, то запросы без схемы в кавычках не работают:

select * from "mySch".mymob - работает
select * from mySch.mymob - выпадает в ошибку

если все делаю скриптами, то работает и без кавычек:

select * from "mmus".kolob - работает
select * from mmus.kolob - тоже работает
11 июн 21, 18:29    [22334545]     Ответить | Цитировать Сообщить модератору
 Re: запросы ругаются на схему  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 4785
Леонид33
я и писал большие буквы, если - делал с большими.

в итоге получаетсятакая картина:
если я делаю схемы и таблицы из среды pgadmin, то запросы без схемы в кавычках не работают:

select * from "mySch".mymob - работает
select * from mySch.mymob - выпадает в ошибку

если все делаю скриптами, то работает и без кавычек:

select * from "mmus".kolob - работает
select * from mmus.kolob - тоже работает


Не вы первый с этим сталкиваетесь.
Вот что в реальности происходит:

Из https://www.postgresql.org/docs/13/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS
Quoting an identifier also makes it case-sensitive, whereas unquoted names are always folded to lower case. For example, the identifiers FOO, foo, and "foo" are considered the same by PostgreSQL, but "Foo" and "FOO" are different from these three and each other.

Соответственно когда вы скриптом создаете схему вы скорее всего ее имя без двойных кавычек указываете.
Поэтому в реальности вы создаете не mySch а mysch
А когда делаете через pgadmin он создает схему именно в том case что вы написали.

Вот потому и разница в поведении.

Я бы настоятельно рекомендовал все в lower case всегда делать во избежание подобной путаницы.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
11 июн 21, 20:27    [22334568]     Ответить | Цитировать Сообщить модератору
 Re: запросы ругаются на схему  [new]
Леонид33
Member

Откуда:
Сообщений: 185
Maxim Boguk,

Спасибо, просветили!

ток зачем такой гемор? не лучше ли - написал большими - значит большими... маленькими - значит маленькими...

Сообщение было отредактировано: 12 июн 21, 01:38
12 июн 21, 01:45    [22334625]     Ответить | Цитировать Сообщить модератору
 Re: запросы ругаются на схему  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 4785
Леонид33
Maxim Boguk,

Спасибо, просветили!

ток зачем такой гемор? не лучше ли - написал большими - значит большими... маленькими - значит маленькими...


Таков путь... точнее требования международного SQL стандарта которому лет и лет (хорошо если не 30 как минимум в этой части).
Мне case insensetive в sql как раз нравяться потому что я могу писать как удобно-красивеее-поятнее мне лично а внутри всёравно low case будет.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
12 июн 21, 10:23    [22334660]     Ответить | Цитировать Сообщить модератору
Все форумы / PostgreSQL Ответить