Postgresql: путаница с именем таблицы - PullRequest
13 голосов
/ 01 сентября 2011

Я создал таблицу Abc в публичной схеме моей базы данных postgresql.Согласно документации public должна быть схемой по умолчанию.search_path установлено на "$user",public, как и ожидалось.Но происходит следующее:

select * from Abc

, и этот вызов тоже не срабатывает:

select * from public.Abc

Оба выдают ошибку, сообщающую, что relation ... does not exist.Но этот работает отлично:

select * from public."Abc"

Я опытный разработчик T-SQL, но новичок в postgresql.Согласно документации, должно быть возможно использовать «нормальный» SQL с postgresql.Но это не работает в моем случае.Любой намек на то, что я мог испортить!?

Ответы [ 3 ]

10 голосов
/ 01 сентября 2011

Postgresql по умолчанию использует символы нижнего регистра, но учитывает регистр имен столбцов / таблиц:

select * from public.Abc 

на самом деле:

select * from public.abc

Это потому, что ваша таблица называется Abc, поэтому ее нельзя найти.

Вы можете переопределить это поведение в нижнем регистре через кавычки, поэтому «Abc» обрабатывается как Abc.

6 голосов
/ 01 сентября 2011

Это нормально, имена объектов, такие как таблицы и столбцы, нечувствительны к регистру, если вы не заключите их в двойные кавычки ". Это стандартное поведение SQL.

5 голосов
/ 01 сентября 2011

Не верь в смешанном случае.Лучше всего для вашего здравомыслия никогда не использовать смешанный случай.Общая схема (в основном) является схемой по умолчанию и может быть опущена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...