C# + mysql restore

martedì 22 settembre 2009 - 10.02

slackewix Profilo | Newbie

ciao a tutti, eccomi con un nuovo problema: devo fare il backup ed il restore programmatico del database mysql in c#. Facendo un po' di ricerche ho trovato che si fa lanciando un comando da shell, mysqldump per il backup e mysql per il restore. Ecco, il backup funziona senza problemi, il restore invece mi pianta l'applicativo. La stessa stringa inviata direttamente da shell invece funzione. Ho visto che altri hanno avuto lo stesso problema, ma nessuno aveva una soluzione. Avete suggerimenti? Di seguito il codice per il restore
System.Diagnostics.ProcessStartInfo proc = new System.Diagnostics.ProcessStartInfo(); string cmd = "-uuser -ppassword -hlocalhost db_test < " + Application.StartupPath + "\\backup\\22_09_2009_656.sql"; proc.FileName = Application.StartupPath + "\\mysql "; proc.RedirectStandardInput = false; proc.RedirectStandardOutput = true; proc.Arguments = cmd; proc.UseShellExecute = false; //proc.WindowStyle = System.Diagnostics.ProcessWindowStyle.Minimized; proc.CreateNoWindow = true; System.Diagnostics.Process p = System.Diagnostics.Process.Start(proc); p.WaitForExit(); p.Close();

ho già provato a cambiare l stringa in vari modi, ma senza successo. Oltretutto non riesco a capire perchè funzioni direttamente da shell, mentre dall'interno dell'applicativo no. grazie dell'aiuto

nessuno che abbia un'idea, anche piccola? non sono ancora riuscito a risolvere...

impy Profilo | Newbie

Ciao!

Arrivo tardi ma ho avuto il tuo stesso problema e lo ho risolto.

Il problema sta nel reindirizzamento dell'input. Fino a che il canale di input resta aperto con l'applicazione (mysql.exe in questo caso) la stessa non termina, come conseguenza chiamando WaitForExit() congeli la tua applicazione.
Per fare in modo che ciò non accada, al termine della scrittura dei dati nello stream di input, devi chiudere il canale di comunicazione.

process.StandardInput.Close()

A questo punto l'eseguibile mysql terminerà non bloccando più la tua applicazione.

Saluti,
GI
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5