Tento článek vyšel před 15 lety. Můžete si jej přečíst v rámci zkoumání minulosti, ale přepokládejte, že dnes se Honza již nemusí s obsahem ztotožňovat.
Tak se mi stalo, že jsem nahrál dump databáze na localhost a ona vyhodila asi takovýto error:
Jeho číselné označení si přečtěte v titulku. Pátral jsem pátral a nakonec jsem zjistil, že příčin může být více a zjistit o tom nejde skoro nic. Prima. Každopádně můj problém byl způsobený tím, že v databázi byly pohledy (VIEW
) a ty mají nastaveno určité oprávnění. Je to kvůli bezpečnosti atd. – viz manuál, no každopádně když si to tam nastavíte špatně, tak máte smůlu. Při tvorbě VIEW
máte možnost zadat SQL SECURITY
jako DEFINER
nebo INVOKER
. Někdy se může hodit to první, tedy přesné nastavení uživatele na serveru, ale pro normální přenos kamkoliv jinam bez omezení je asi lepší INVOKER
, což by měl být ten, kdo pohled spouští. Zajímavá diskuse k tématu je zde.
Ale já přeci nic nenastavoval :| . Mám čistý dump z phpMyAdmina! No, to je sice hezké, ale phpMyAdmin s těmi VIEW
moc neumí a přiřazuje každému nějaký defaultní DEFINER
, který si vygeneruje (v mém případě 'root'@'%'
). Ten samozřejmě na jiném PC vůbec neexistuje. V phpMyAdminu mi to ani nešlo změnit, musel jsem to přepsat přímo v SQL a potom se to rozjelo. No asi mám nějaký starý phpMyAdmin, říkám si, takže stahuju a zkouším nový s myšlenkou, že to snad už dopilovali.
No, a světe div se, sice má více možností práce s VIEW
, ale kazí export úplně stejně jako ten starý. Nikde nevidím nastavení tohoto omezení – ani v nabídkách pro pohledy, ani při exportu. Ach jo, takže ruční práce a dávat si pozor… Nic jiného nezbývá :( .