Deze vraag is een beetje oud, maar ik heb net een paar uur verspild met het proberen om precies hetzelfde probleem op te lossen, dus ik denk dat een duidelijke uitleg in de toekomst van pas kan komen voor iemand...
Om maar meteen met de deur in huis te vallen:het probleem zit in het DEFINER-veld in je mysql-dump. Het ziet er ongeveer zo uit:
/*!50013 DEFINER=`some_user`@`localhost` SQL SECURITY DEFINER */
Het probleem is dat dit *[email protected] * wordt altijd hardgecodeerd naar het gebruikersaccount dat werd gebruikt om de weergave in de oorspronkelijke DB te maken en NIET de gebruiker die je hebt gebruikt om de database te exporteren of importeren zoals je zou verwachten (of dat deed ik tenminste). En later, tijdens het importeren, wordt deze gebruiker gebruikt om de weergave opnieuw te maken.
U kunt dus exporteren/importeren als root, maar als de oorspronkelijke DB onder een andere gebruiker draait en deze geen CREATE VIEW-rechten heeft in de nieuwe database, zal de import mislukken.
Je hebt twee simpele oplossingen:
- Zoek en vervang alle verwijzingen naar
some_user
@localhost
in uw dumpbestand met uw nieuwe gebruiker (degene die u gebruikt om de dump te importeren, bijv. example@ sqldat.com ) - Of je kunt *some_user* de juiste rechten verlenen op de nieuwe database zodat views kunnen worden aangemaakt onder zijn account
Hoe dan ook, het probleem wordt opgelost, maar ik denk dat de eerste benadering veel beter en schoner is, omdat je je in de toekomst geen zorgen hoeft te maken over meerdere gebruikers.