Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Řešení běžných problémů s připojením, ověřováním a datovým typem MySQL v Tvůrci rozhraní Data API
Časté dotazy
Co je podpora MySQL v DAB?
Data API builder podporuje MySQL jako zázemí relační databáze. DAB se připojuje pomocí ovladače MySqlConnector a překládá požadavky REST a GraphQL na dotazy SQL. Podporují se jak místní instance MySQL, tak spravované služby, jako je Azure Database for MySQL.
Jaký formát připojovacího řetězce používá MySQL?
DAB používá standardní připojovací řetězec MySQL ADO.NET. Typický řetězec vypadá takto Server=localhost;Port=3306;Database=mydb;Uid=myuser;Pwd=mypassword;. Nastavte připojovací řetězec v poli data-source.connection-string nebo ho předejte přes --connection-string v dab init.
Jaké verze MySQL jsou podporované?
DAB podporuje MySQL 8.0 a novější. MySQL 5.7 může fungovat, ale oficiálně se nepodporuje. Potvrďte verzi serveru pomocí SELECT VERSION(); v shellu MySQL. Pokud používáte spravovanou službu, jako je Azure Database for MySQL, použijte flexibilní serverovou úroveň, která podporuje MySQL 8.0.
Běžné problémy
Nejde se připojit ke kontejneru MySQL
Příznak: DAB se nepodaří spustit s Unable to connect to any of the specified MySQL hosts.
Způsobit: Port kontejneru MySQL není namapovaný, název hostitele je nesprávný nebo se kontejner nedokončil inicializací.
Řešení: Ověřte, že kontejner běží s docker ps a že je port 3306 namapovaný na hostitele. Použijte Server=localhost;Port=3306 v připojovacím řetězci. Počkejte několik sekund po spuštění kontejneru pro MySQL a dokončete inicializaci před spuštěním DAB.
Přístup byl odepřen pro uživatele
Příznak: Protokoly DAB ukazují Access denied for user 'myuser'@'172.x.x.x' nebo něco podobného.
Příčina: Uživatelský účet MySQL je omezen na konkrétního hostitele. Když DAB běží v Dockeru, připojení pocházejí z IP adresy sítě kontejneru, nikoli localhost.
Rozlišení: Udělte uživateli přístup z libovolného hostitele spuštěním GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword'; FLUSH PRIVILEGES;příkazu . V produkčním prostředí nahraďte % konkrétním hostitelem nebo podsítím. Ověřte, že heslo odpovídá spuštěním mysql -u myuser -p ze stejné sítě.
Neznámá chyba databáze
Příznak: DAB se vrací Unknown database 'mydb' během spouštění.
Příčina: Databáze zadaná v připojovacím řetězci nebyla vytvořena na serveru MySQL.
Rozlišení: Vytvořte databázi před spuštěním DAB spuštěním CREATE DATABASE mydb; v prostředí MySQL. Pokud používáte kontejner, nastavte MYSQL_DATABASE proměnnou prostředí tak, aby MySQL vytvářela databázi při prvním spuštění.
Upozornění na nepodporovaný typ sloupce
Příznakem: DAB zaznamená upozornění na nepodporovaný typ sloupce a ve vygenerovaném schématu chybí pole.
Příčina: Některé typy specifické pro MySQL, například SET, ENUM, nebo prostorové typy, nemusí mít přímé mapování v systému typů DAB.
Rozlišení: Zkontrolujte protokoly DAB a identifikujte sloupec a typ. Zvažte úpravu sloupce na podporovaný typ, například VARCHAR pro ENUM pole, nebo vyloučíte sloupec z definice entity pomocí mappings konfigurace a vynecháte ho z vystaveného schématu.
Aktualizace selže v zobrazeních
Příznak: Požadavek PUT nebo PATCH na entitu podporovanou zobrazením MySQL selže s chybou nebo nemá žádný vliv.
Příčina: Sestavovatel rozhraní Data API v současné době nepodporuje operace aktualizace v zobrazeních MySQL. Jedná se o známé omezení sledované v problému GitHubu č. 938.
Rozlišení: Pro operace zápisu použijte entitu základní tabulky. Pokud je zobrazení koncepčně jen pro čtení, nastavte "update": false v oprávněních entity, aby bylo omezení explicitní.
Aktualizace selže u tabulek s vypočítanými sloupci
Příznakem: Požadavek PUT nebo PATCH v tabulce MySQL, která obsahuje počítané sloupce, selže nebo vrátí chybu.
Příčina: Tvůrce rozhraní datového API nezpracovává správně vypočítané sloupce během operací aktualizace v MySQL. Jedná se o známé omezení sledované v problému GitHubu č. 1001.
Rozlišení: V tuto chvíli neexistuje žádné alternativní řešení. Pokud je to možné, vylučte počítané sloupce z mapování entity nebo se vyhněte operacím aktualizací u ovlivněných entit, dokud se problém nevyřeší.
Vnořené filtrování se nepodporuje.
Příznakem: Dotaz REST \ nebo GraphQL ilter, který filtruje související pole entity, vrátí chybu nebo neočekávané výsledky u entity založené na MySQL.
Příčina: Data API builder momentálně nepodporuje vnořené filtrování pro MySQL. Jedná se o známé omezení sledované v problému GitHubu č. 1019.
Rozlišení: Použijte filtrování pouze u polí entity nejvyšší úrovně. U vnořených dat načtěte nadřazený objekt a filtrujte na straně klienta, nebo restrukturalizujte dotaz, abyste se vyhnuli vnořeným predikátům.
Uložené procedury nejsou podporovány.
Příznakem: Konfigurace uložené procedury MySQL jako zdroje entity selže nebo se entita nechová podle očekávání.
Příčina: Data API builder v současné době nepodporuje procedury uložené pro MySQL. Jedná se o známé omezení sledované v problému GitHubu č. 1024.
Rozlišení: Místo toho použijte tabulku nebo zobrazení jako zdroj entity. Sledujte problém na GitHubu pro aktualizace, kdy bude přidána podpora uložených procedur MySQL.
Zásady použití databáze se nevynucují při operacích vytvoření.
Příznak: Požadavek na vytvoření mutace nebo POST proběhne úspěšně i tehdy, když by politika databáze měla operaci omezit.
Příčina: Podpora zásad databáze pro akce vytváření v MySQL ještě není implementována. Jedná se o známé omezení sledované v problému GitHubu č. 1329.
Rozlišení: Pomocí oprávnění na základě role omezte přístup k vytváření, dokud nebude k dispozici podpora zásad databáze pro MySQL Create.
Zásady databáze se nevynucují pro operace PUT a PATCH.
Příznak: Požadavek typu PUT nebo PATCH na entitě MySQL je úspěšný, i když by ho databázová politika měla omezit.
Příčina: Podpora zásad databáze pro operace PUT a PATCH v MySQL ještě není implementována. Jedná se o známé omezení sledované v problému GitHubu č. 1371.
Rozlišení: Pomocí oprávnění na základě role omezte přístup k aktualizacím, dokud nebude dostupná podpora zásad databáze pro operace aktualizace MySQL.
Ověřování pomocí On-Behalf-Of (OBO) není podporováno.
Příznak: Konfigurace ověřování On-Behalf-Of (OBO) pro instanci DAB založenou na MySQL selže nebo se token nepředá do databáze podle očekávání.
Příčina: Ověřování OBO je aktuálně podporováno pouze pro SQL Server a Azure SQL. Podpora pro MySQL ještě nebyla implementována. Jedná se o známé omezení sledované v problému GitHubu č. 3159.
Rozlišení: Použijte podporovanou metodu ověřování, jako jsou přihlašovací údaje připojovacího řetězce pro MySQL. Sledujte issue na GitHubu pro aktualizace týkající se rozšíření podpory OBO na databáze jiné než SQL Server.