Domanda

Sto cercando di utilizzare MySQLDump per esportare un database che deve essere importato utilizzando un nome di database diverso. Guardando l'SQL generato da MySQLDump, sembra che i trigger siano gli unici nomi di oggetti che sono completamente qualificati con il nome del database di origine sventando così le mie esigenze. C'è comunque per indirizzare Mysqldump a non qualificare completamente alcun nome di oggetti, inclusi i trigger?

È stato utile?

Soluzione

Ho avuto lo stesso problema e ho trovato la soluzione. Stavo usando MySQL Workbench per progettare il mio database e ho creato alcuni trigger lì. Tutti hanno usato la sintassi CREATE TRIGGER trigger_name Tranne uno: CREATE TRIGGER dbname.trigger_name (È stato solo un mio errore). L'output di Mysqldump includeva tutti i trigger allo stesso modo: solo uno aveva il nome del database.

Mysqldump usa il tuo originale CREATE TRIGGER istruzioni che puoi vedere tramite SHOW CREATE TRIGGER. Se hai un trigger definito con un nome di database, basta sostituirlo (lascia cadere e crea) con uno senza dbname.

Altri suggerimenti

Molto probabilmente si aggiunge il nome del database quando si crea il trigger. Prova ad aggiornare il tuo trigger senza il nome del database.

Non è una soluzione ideale, ma pompare l'output attraverso quanto segue si è sbarazzato del nome del database sui trigger per me.

mysqldump ... opts ... | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' 
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top