Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Решения распространенных проблем с подключением PostgreSQL, схемой и SSL в построителе API данных.
Распространенные вопросы
Что такое поддержка PostgreSQL в DAB?
Построитель данных поддерживает PostgreSQL в качестве серверной части реляционной базы данных. DAB подключается с помощью драйвера Npgsql и преобразует запросы REST и GraphQL в запросы SQL. Поддерживаются как локальные экземпляры PostgreSQL, так и управляемые службы, такие как База данных Azure для PostgreSQL.
Какой формат строки подключения использует PostgreSQL?
DAB использует строку подключения в стиле ADO.NET для PostgreSQL. Типичная строка выглядит следующим образом Host=localhost;Port=5432;Database=mydb;Username=myuser;Password=mypassword;. Задайте строку подключения в поле data-source.connection-string или передайте ее через --connection-string в dab init.
Поддерживает ли DAB схемы PostgreSQL?
Да. DAB поддерживает непубличные схемы. Укажите схему явно в поле сущности source с помощью формата schemaname.tablename (например, sales.orders). Пользователь базы данных, настроенный в строке подключения, должен иметь USAGE привилегии на схему и SELECT, INSERT, UPDATE или DELETE привилегии на целевых таблицах.
Распространенные проблемы
Не удается подключиться к контейнеру PostgreSQL
Симптом: DAB не удается начать с Failed to connect to localhost:5432 или аналогичной сетевой ошибки.
Причина: Порт контейнера PostgreSQL не назначен или контейнер не готов принимать соединения.
Разрешение: Убедитесь, что контейнер запущен, и что docker ps порт 5432 сопоставляется с хостом. Используйте Host=localhost;Port=5432 в строке подключения. Если контейнер только что запущен, позвольте несколько секунд, чтобы PostgreSQL инициализировался перед запуском DAB.
Сбой проверки подлинности паролей
Симптом: журналы DAB показывают 28P01: password authentication failed for user.
Причина: Имя пользователя или пароль в строке подключения неверны, или пользователь PostgreSQL настроен для другого метода проверки подлинности, например, peer или ident.
Разрешение: Убедитесь, что учетные данные соответствуют тем, которые были заданы при создании экземпляра или контейнера PostgreSQL. Для контейнеров проверьте переменные среды POSTGRES_PASSWORD и POSTGRES_USER. При локальном запуске убедитесь, что pg_hba.conf позволяет использовать md5 или scram-sha-256 для проверки подлинности подключающегося узла.
Схема не найдена, когда сущность ссылается на недоступную схему
Симптом: DAB возвращает ошибку relation "tablename" does not exist , даже если таблица существует в базе данных.
Причина: Поле сущности source пропускает префикс схемы, поэтому PostgreSQL выполняет поиск только в схеме public по умолчанию.
Разрешение: Обновите значение в source, чтобы включить префикс схемы, например, sales.orders. Убедитесь, что пользователь базы данных имеет USAGE права на схему, выполнив команду GRANT USAGE ON SCHEMA sales TO myuser; в psql.
Ошибка: требуется SSL при подключении к базе данных Azure для PostgreSQL
Симптом: Сбой SSL connection is requiredподключений к базе данных Azure для PostgreSQL.
Причина: База данных Azure для PostgreSQL по умолчанию требует использование SSL. Подключения без SSL отклоняются.
Разрешение: Добавьте Ssl Mode=Require; к строке подключения. Для полной проверки сертификата также задайте Trust Server Certificate=false и укажите путь к сертификату ЦС сервера через Root Certificate=path/to/ca.pem. Скачайте пакет сертификатов на портале Azure в параметрах сети сервера.
Хранимые процедуры не поддерживаются
Симптом: Настройка хранимой процедуры или функции PostgreSQL в качестве источника объекта приводит к ошибке, или объект не работает должным образом.
Причина: Конструктор API данных в настоящее время не поддерживает хранимые процедуры для PostgreSQL. Это известное ограничение, отслеживаемое в проблеме GitHub #1023.
Разрешение: Вместо этого используйте таблицу или представление в качестве источника сущности. Следите за задачей на GitHub, чтобы получать обновления о добавлении поддержки хранимых процедур PostgreSQL.
Политика базы данных не применяется для операций создания объектов
Симптом: Создание изменения или запрос POST завершается успешно, даже если политика базы данных должна ограничить операцию.
Причина: Поддержка политики базы данных для действий создания в PostgreSQL не реализована еще. Это известное ограничение, отслеживаемое в проблеме GitHub #1334.
Разрешение: Используйте разрешения на основе ролей, чтобы ограничить доступ к созданию, пока не будет доступна поддержка политики базы данных для PostgreSQL Create.
Политика базы данных не применяется для операций PUT и PATCH
Симптом: Запрос PUT или PATCH для сущности PostgreSQL завершается успешно, даже если политика базы данных должна ограничить ее.
Причина: Поддержка политики базы данных для операций PUT и PATCH в PostgreSQL еще не реализована. Это известное ограничение, отслеживаемое в проблеме GitHub #1372.
Разрешение: Используйте разрешения на основе ролей, чтобы ограничить доступ к обновлению до тех пор, пока не будет доступна поддержка политики базы данных для операций обновления PostgreSQL.
Аутентификация On-Behalf-Of (OBO) не поддерживается.
Симптом: Настройка проверки подлинности Behalf-Of (OBO) для экземпляра DAB, поддерживаемого PostgreSQL, завершается сбоем или токен не перенаправлен в базу данных, как ожидалось.
Причина: Проверка подлинности OBO в настоящее время поддерживается только для SQL Server и Azure SQL. Поддержка PostgreSQL, MySQL и Azure Cosmos DB еще не реализована. Это известное ограничение, отслеживаемое в проблеме GitHub #3159.
Разрешение: Используйте поддерживаемый метод проверки подлинности, например учетные данные строки подключения или управляемое удостоверение для PostgreSQL. Следите за задачей GitHub для обновлений о расширении поддержки OBO на другие базы данных, кроме SQL Server.