MySQL-hibaelhárítás

Megoldások a Data API Builder gyakori MySQL-kapcsolati, hitelesítési és adattípus-problémáira.

Gyakori kérdések

Mi a MySQL-támogatás a DAB-ban?

A Data API Builder relációs adatbázisként támogatja a MySQL-t. A DAB a MySqlConnector illesztővel csatlakozik, és a REST- és GraphQL-kéréseket SQL-lekérdezésekké fordítja le. Mind a saját üzemeltetésű MySQL-példányok, mind a felügyelt szolgáltatások, például az Azure Database for MySQL támogatottak.

Milyen kapcsolati sztringformátumot használ a MySQL?

A DAB szabványos MySQL-ADO.NET kapcsolati sztringet használ. Egy tipikus sztring így néz ki: Server=localhost;Port=3306;Database=mydb;Uid=myuser;Pwd=mypassword;. Állítsa be a kapcsolati karakterláncot a data-source.connection-string mezőben a dab-config.json-nél, vagy adja át a --connection-string segítségével a dab init-ban.

Milyen MySQL-verziók támogatottak?

A DAB támogatja a MySQL 8.0-s és újabb verzióit. A MySQL 5.7 működhet, de hivatalosan nem támogatott. Ellenőrizze a kiszolgáló verzióját a MySQL parancssorban SELECT VERSION(); . Ha olyan felügyelt szolgáltatáson dolgozik, mint az Azure Database for MySQL, használja a Rugalmas kiszolgálói szintet, amely támogatja a MySQL 8.0-t.

Gyakori problémák

Nem lehet csatlakozni a MySQL-tárolóhoz

Tünet: A DAB nem indul el Unable to connect to any of the specified MySQL hosts.

Okoz: A MySQL konténer portja nincs megfeleltetve, a hosztnév hibás, vagy a konténer inicializálása nem fejeződött be.

Felbontás: Ellenőrizze, hogy a konténer fut-e, és hogy a port 3306 le van-e képezve a gazdagépre. Használja Server=localhost;Port=3306 a kapcsolati sztringben. Hagyja, hogy néhány másodperccel a Tároló indítása után a MySQL befejezze az inicializálást a DAB elindítása előtt.

Hozzáférés megtagadva a felhasználó számára

Tünet: A DAB-naplók azt mutatják, hogy Access denied for user 'myuser'@'172.x.x.x' vagy hasonlók.

Okoz: A MySQL-felhasználói fiók egy adott gazdagépre korlátozódik. Amikor a DAB a Dockerben fut, a kapcsolatok a tárolóhálózat IP-címéről származnak, nem az localhost.

Megoldás: Adjon hozzáférést a felhasználónak bármely gazdagépről annak futtatásával GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword'; FLUSH PRIVILEGES;. Gyártás esetén cserélje le a % helyére az adott gazdagépet vagy alhálózatot. Ellenőrizze, hogy a jelszó egyezik-e, futtatva a mysql -u myuser -p parancsot ugyanarról a hálózatról.

Ismeretlen adatbázishiba

Tünet: A DAB az Unknown database 'mydb' indítás során tér vissza.

Okoz: A kapcsolati sztringben megadott adatbázis nem lett létrehozva a MySQL-kiszolgálón.

Megoldás: Hozza létre az adatbázist a MySQL-shellben való CREATE DATABASE mydb; futtatásával a DAB elindítása előtt. Amennyiben tárolót használ, állítsa be a MYSQL_DATABASE környezeti változót, hogy a MySQL az első indításkor létrehozza az adatbázist.

Nem támogatott oszloptípusra figyelmeztető figyelmeztetés

Tünet: A DAB naplózza a nem támogatott oszloptípusra vonatkozó figyelmeztetést, és a mező hiányzik a létrehozott sémából.

Okoz: Előfordulhat, hogy bizonyos MySQL-specifikus típusok, például SETa , ENUMvagy térbeli típusok nem rendelkeznek közvetlen leképezéssel a DAB típusrendszerében.

Felbontás: Tekintse át a DAB-naplókat az oszlop és a típus azonosításához. Fontolja meg, hogy az oszlopot egy támogatott típusra, például VARCHAR típusúvá módosítja, vagy a ENUM mezők esetén kizárja az oszlopot az entitás meghatározásából a mappings konfiguráció használatával, hogy kihagyja a közzétett sémából.

A frissítés nem működik a nézetekben

Tünet: A MySQL-nézet által támogatott entitásokra vonatkozó PUT vagy PATCH kérés hiba miatt meghiúsul, vagy nincs hatása.

Okoz: A Data API Builder jelenleg nem támogatja a MySQL-nézetek frissítési műveleteit. Ez egy ismert korlátozás, amelyet a GitHub 938- os számában észleltek.

Felbontás: Alaptábla-entitás használata írási műveletekhez. Ha a nézet szándékosan csak olvasható, állítsa a "módosítás" értéket false-ra az entitás engedélyeiben, hogy a korlátozás egyértelmű legyen.

A frissítés nem sikerül a számított oszlopokkal rendelkező táblákon

Tünet: A számított oszlopokat tartalmazó MySQL-táblák PUT vagy PATCH kérése meghiúsul, vagy hibát ad vissza.

Okoz: A Data API Builder nem kezeli megfelelően a számított oszlopokat a MySQL frissítési műveletei során. Ez egy ismert korlátozás, amelyet a GitHub-issue #1001 alatt követnek nyomon.

Megoldás: Jelenleg nincs áthidaló megoldás. Ha lehetséges, zárja ki a számított oszlopokat az entitás leképezéseiből, vagy kerülje az érintett entitásokon végzett frissítési műveleteket a probléma megoldásáig.

A beágyazott szűrés nem támogatott

Tünet: A kapcsolódó entitásmezőkre szűrő REST \ vagy GraphQL ilter lekérdezés hibát vagy váratlan eredményt ad vissza egy MySQL-alapú entitáson.

Okoz: A Data API Builder jelenleg nem támogatja a MySQL beágyazott szűrését. Ez egy ismert korlátozás, amelyet a GitHub 1019. számában észleltek.

Felbontás: Csak a felső szintű entitásmezőkre alkalmazza a szűrést. Beágyazott adatok esetén kérje le a szülőt, és végezze el a szűrést az ügyféloldalon, vagy strukturálja át a lekérdezést a beágyazott predikátumok elkerülése érdekében.

A tárolt eljárások nem támogatottak

Tünet: A MySQL-ben tárolt eljárás entitásforrásként való konfigurálása meghiúsul, vagy az entitás nem a várt módon viselkedik.

Okoz: A Data API Builder jelenleg nem támogatja a MySQL tárolt eljárásait. Ez egy ismert korlátozás, amelyet a GitHub 1024- ik számában észleltek.

Felbontás: Használjon inkább egy táblát vagy nézetet entitásforrásként. Kövesse a GitHub-jegyet, hogy értesüljön a MySQL tárolt eljárások támogatásának aktuális frissítéseiről.

Az adatbázis házirend nem kerül érvényesítésre a létrehozási műveleteknél

Tünet: A létrehozási mutáció vagy POST-kérés akkor is sikeres, ha egy adatbázis-szabályzatnak korlátoznia kell a műveletet.

Okoz: A MySQL-beli létrehozási műveletek adatbázisházirend-támogatása még nincs implementálva. Ez egy ismert korlátozás, amelyet a GitHub 1329- ik számában észleltek.

Felbontás: Szerepköralapú engedélyekkel korlátozhatja a létrehozási hozzáférést, amíg el nem érhető a MySQL Create adatbázisházirend-támogatása.

Az adatbázis házirend nem érvényesül a PUT és a PATCH műveletek esetén

Tünet: Egy MySQL-entitás PUT vagy PATCH kérése akkor is sikeres, ha egy adatbázis-szabályzatnak korlátoznia kell.

Okoz: A PUT és a PATCH műveletek adatbázisházirend-támogatása még nincs implementálva a MySQL-ben. Ez egy ismert korlátozás, amelyet a GitHub issue #1371-ben követnek nyomon.

Felbontás: Szerepköralapú engedélyekkel korlátozhatja a frissítési hozzáférést, amíg el nem érhető a MySQL-frissítési műveletek adatbázisházirend-támogatása.

On-Behalf-Of (OBO) hitelesítés nem támogatott

Tünet: Az On-Behalf-Of (OBO) hitelesítés konfigurálása egy MySQL-alapú DAB-példányhoz sikertelen, vagy a jogkivonat nem a várt módon van továbbítva az adatbázisnak.

Okoz: Az OBO-hitelesítés jelenleg csak az SQL Server és az Azure SQL esetében támogatott. A MySQL támogatása még nincs implementálva. Ez egy ismert korlátozás, amelyet a GitHub 3159- ös problémájában követnek nyomon.

Felbontás: Használjon támogatott hitelesítési módszert, például a MySQL kapcsolati sztring-hitelesítő adatait. Az OBO-támogatás nem SQL Server-adatbázisokra való kiterjesztésének időpontjáról a GitHub-problémát követve tájékozódhat.