Запрос Postgres через Babelfish
Я подключен через TDS (1433) к базе данных Postgres / Aurora (с поддержкой babelfish).
Я могу выполнить следующие три запроса из своего приложения и получаю непонятные ответы:
SELECT current_database()
SELECT * FROM information_schema.tables WHERE table_name = 'PERSON'
SELECT COUNT(1) FROM "PERSON"
Ответы следующие:
current_database":"babelfish_db"
"table_catalog":"babelfish_db","table_schema":"public","table_name":"PERSON","table_type":"BASE TABLE"...}
relation "person" does not exist
Я просто не могу запросить таблицу PERSON. Я пытался:
"PERSON"
"person"
PERSON
person
public.PERSON
public.person
public."PERSON"
Я убедился, что у пользователя, с которым я подключаюсь, есть доступ к базе данных, схеме и таблицам:
GRANT CONNECT ON DATABASE babelfish_db TO popweb;
GRANT USAGE ON SCHEMA public TO popweb;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO popweb;
Тем не менее, я не могу получить доступ к таблице. Я чувствую себя таким болваном / нубом
Для тех, кто подключился к Postgres через Babelfish, что я делаю не так?
1 ответ
Общедоступный выпуск Babelfish не внес никаких изменений в реализацию информационной схемы PostgreSQL. Итак, вы видите физическую базу данных babelfish_db и общедоступную схему. Похоже, вы создали таблицу, используя конечную точку PostgreSQL.
Чтобы работать с таблицами в Babelfish в настоящее время, вам необходимо создать виртуальную базу данных T-SQL и свои таблицы внутри этой базы данных с помощью конечной точки T-SQL — так же, как вы делали это раньше.
Например, с помощью SSMS и нового запроса, подключенного к вашей конечной точке Babelfish. Вы должны заметить в раскрывающемся списке базы данных SSMS и в строке состояния, что ваш контекст показывает, что вы находитесь в базе данных master.
CREATE DATABASE ford_prefect;
GO
USE ford_prefect;
GO
CREATE SCHEMA school;
GO
CREATE TABLE [School].[Person](
[PersonID] [int] NOT NULL,
[LastName] [nvarchar](50) NOT NULL,
[FirstName] [nvarchar](50) NOT NULL,
[HireDate] [datetime] NULL,
[EnrollmentDate] [datetime] NULL,
[Discriminator] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_School.Student] PRIMARY KEY CLUSTERED
(
[PersonID] ASC
)
GO
На этом этапе вы можете добавлять записи через INSERT и выбирать таблицу без проблем. Ура,
Билл Рамос
Аврора PostgreSQL Babelfish PM, Amazon