Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Решения распространенных проблем с подключением MySQL, проверкой подлинности и типом данных в построителе API данных.
Распространенные вопросы
Что такое поддержка MySQL в DAB?
Конструктор API данных поддерживает MySQL в качестве серверной части для реляционной базы данных. DAB подключается с помощью драйвера MySqlConnector и преобразует запросы REST и GraphQL в запросы SQL. Поддерживаются как локальные экземпляры MySQL, так и управляемые службы, такие как База данных Azure для MySQL.
Какой формат строки подключения использует MySQL?
DAB использует стандартную строку подключения MySQL ADO.NET. Типичная строка выглядит следующим образом Server=localhost;Port=3306;Database=mydb;Uid=myuser;Pwd=mypassword;. Задайте строку подключения в поле data-source.connection-string или передайте ее через --connection-string в dab init.
Какие версии MySQL поддерживаются?
DAB поддерживает MySQL 8.0 и более поздних версий. MySQL 5.7 может работать, но официально не поддерживается. Подтвердите версию сервера с помощью SELECT VERSION(); в интерпретаторе команд MySQL. Если вы используете управляемую службу, например Базу данных Azure для MySQL, используйте гибкий уровень сервера, который поддерживает MySQL 8.0.
Распространенные проблемы
Не удается подключиться к контейнеру MySQL
Симптом: DAB не удается начать с Unable to connect to any of the specified MySQL hosts.
Причина: Порт контейнера MySQL не сопоставлен, имя узла указано неправильно, или контейнер не завершил инициализацию.
Разрешение: Убедитесь, что контейнер запущен, и что docker ps порт 3306 сопоставляется с хостом. Используйте Server=localhost;Port=3306 в строке подключения. Разрешите несколько секунд после запуска контейнера для MySQL завершить инициализацию перед запуском DAB.
Доступ запрещен для пользователя
Симптом: Журналы DAB показывают Access denied for user 'myuser'@'172.x.x.x' или подобное.
Причина: Учетная запись пользователя MySQL ограничена определенным узлом. При запуске DAB в Docker подключения исходят из IP-адреса сети контейнеров, а не localhost.
Разрешение: Предоставьте пользователю доступ из любого узла, выполнив команду GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword'; FLUSH PRIVILEGES;. Для производственной среды замените % определенным узлом или подсетью. Проверьте совпадения паролей, выполнив команду mysql -u myuser -p из той же сети.
Неизвестная ошибка базы данных
Симптом: DAB выдает Unknown database 'mydb' во время запуска.
Причина: База данных, указанная в строке подключения, не была создана на сервере MySQL.
Разрешение: Создайте базу данных перед запуском DAB, выполнив команду в оболочке MySQL CREATE DATABASE mydb;. Если используется контейнер, задайте MYSQL_DATABASE переменную среды, чтобы MySQL создал базу данных при первом запуске.
Предупреждение: неподдерживаемый тип столбца
Симптом: DAB регистрирует предупреждение о неподдерживаемом типе столбца, а поле отсутствует в созданной схеме.
Причина: Некоторые типы, относящиеся к MySQL, например SET, ENUM, или пространственные типы, могут не иметь прямого сопоставления в системе типов DAB.
Разрешение: Просмотрите журналы DAB, чтобы определить столбец и тип. Попробуйте изменить столбец на поддерживаемый тип, например VARCHAR для ENUM полей, или исключить столбец из определения сущности, используя mappings конфигурацию, чтобы опустить ее из предоставленной схемы.
Сбой обновления представлений
Симптом: Запрос PUT или PATCH для сущности, поддерживаемой представлением MySQL, завершается ошибкой или не влияет.
Причина: Конструктор API данных в настоящее время не поддерживает операции обновления в представлениях MySQL. Это известное ограничение, отслеживаемое в проблеме GitHub #938.
Разрешение: Используйте базовую сущность таблицы для операций записи. Если представление доступно только для чтения по умолчанию, задайте значение "update": false в разрешениях сущности, чтобы явно указать ограничение.
Ошибка обновления таблиц с вычисляемыми столбцами
Симптом: Запрос PUT или PATCH в таблице MySQL, содержащей вычисляемые столбцы, завершается ошибкой или возвращает ошибку.
Причина: Data API Builder неправильно обрабатывает вычисляемые столбцы при выполнении операций обновления в MySQL. Это известное ограничение, отслеживаемое в проблеме GitHub #1001.
Разрешение: Обходного решения не существует в настоящее время. Исключите вычисляемые столбцы из сопоставлений сущностей, если это возможно, или избегайте операций обновления в затронутых сущностях до устранения проблемы.
Вложенная фильтрация не поддерживается
Симптом: Запрос REST \ или GraphQL ilter, который фильтрует связанное поле сущности, возвращает ошибку или непредвиденные результаты для сущности, поддерживаемой MySQL.
Причина: Конструктор API данных сейчас не поддерживает вложенную фильтрацию для MySQL. Это известное ограничение, отслеживаемое в проблеме GitHub #1019.
Разрешение: Примените фильтрацию только к полям сущности верхнего уровня. Для вложенных данных извлеките родительский объект и отфильтруйте на стороне клиента или переструктурируйте запрос, чтобы избежать вложенных предикатов.
Хранимые процедуры не поддерживаются
Симптом: Ошибка возникает при настройке хранимой процедуры MySQL в качестве источника сущности, или сущность не ведет себя ожидаемым образом.
Причина: Построитель API данных сейчас не поддерживает хранимые процедуры для MySQL. Это известное ограничение, отслеживаемое в проблеме GitHub #1024.
Разрешение: Вместо этого используйте таблицу или представление в качестве источника сущности. Следите за проблемой в GitHub, чтобы получать обновления о том, когда будет добавлена поддержка хранимых процедур MySQL.
Политика базы данных не применяется для операций создания объектов
Симптом: Создание изменения или запрос POST завершается успешно, даже если политика базы данных должна ограничить операцию.
Причина: Поддержка политики базы данных для действий по созданию в MySQL еще не реализована. Это известное ограничение, отслеживаемое в проблеме GitHub #1329.
Разрешение: Используйте разрешения на основе ролей, чтобы ограничить доступ к созданию до тех пор, пока не будет доступна поддержка политики базы данных для Создания MySQL.
Политика базы данных не применяется для операций PUT и PATCH
Симптом: Запрос PUT или PATCH для сущности MySQL завершается успешно, даже если политика базы данных должна ограничить ее.
Причина: Поддержка политики базы данных для операций PUT и PATCH в MySQL еще не реализована. Это известное ограничение, отслеживаемое в проблеме GitHub #1371.
Разрешение: Используйте разрешения на основе ролей, чтобы ограничить доступ к обновлению до тех пор, пока не будет доступна поддержка политики базы данных для операций обновления MySQL.
Аутентификация On-Behalf-Of (OBO) не поддерживается.
Симптом: Настройка проверки подлинности On-Behalf-Of (OBO) для экземпляра DAB на базе MySQL завершается сбоем, или токен не перенаправляется в базу данных как ожидалось.
Причина: Проверка подлинности OBO в настоящее время поддерживается только для SQL Server и Azure SQL. Поддержка MySQL еще не реализована. Это известное ограничение, отслеживаемое в проблеме GitHub #3159.
Разрешение: Используйте поддерживаемый метод проверки подлинности, например учетные данные строки подключения для MySQL. Следите за задачей GitHub для обновлений о расширении поддержки OBO на другие базы данных, кроме SQL Server.