public ImportResultSet executeScript() { ImportResultSet result = new ImportResultSet(); if (string.IsNullOrWhiteSpace(this.script)) { result.wasSuccessful = false; result.errorMessage = "Script not set"; return(result); } try { MySqlConnection con = new MySqlConnection(connectionString); con.Open(); MySqlScript script = new MySqlScript(con, this.script); script.Delimiter = config.scriptDelimeter; script.StatementExecuted += scriptStatementExecuted; script.Execute(); result.wasSuccessful = true; } catch (Exception ex) { result.wasSuccessful = false; result.errorMessage = ex.Message; } return(result); }
/* * private bool isServerCompatible() * { * bool isCompatible = true; * //https://stackoverflow.com/questions/17464116/how-do-i-know-a-mysql-user-has-the-maximum-privileges-possible * //https://stackoverflow.com/questions/6956106/how-to-know-if-mysql-binary-log-is-enable-through-sql-command * //https://www.thegeekstuff.com/2017/08/mysqlbinlog-examples/ * //check if the user has super priviledge and if binary logging is enabled on the server * //if not stop and pop message * return isCompatible; * }*/ public ImportResultSet executeScript() { ImportResultSet result = new ImportResultSet(); if (!string.IsNullOrWhiteSpace(this.scriptStatus)) { result.wasSuccessful = false; result.errorMessage = this.scriptStatus; return(result); } try { /* not needed for import only needed for dump keeping as example * if (!isServerCompatible()) * { * result.wasSuccessful = false; * result.errorMessage = "The user has no super priviledge on the server or binary logging is not enabled."; * return result; * }*/ result = executeSQLscript(); //result = executeSQLscript(); } catch (Exception ex) { result.wasSuccessful = false; result.errorMessage = "import task: " + ex.Message; } return(result); }
private void onImportComplete(ImportResultSet result) { ImportComplete?.Invoke(result); }
private void onImportCompleteHandler(ImportResultSet result) { deletefiles(); onImportComplete(result); }
/* old method using MySqlScript * private ImportResultSet executeSQLscript() * { * ImportResultSet result = new ImportResultSet(); * * MySqlConnection con = new MySqlConnection(connectionString); * con.Open(); * * MySqlScript script = new MySqlScript(con, this.script); * script.Delimiter = config.scriptDelimeter; * script.StatementExecuted += scriptStatementExecuted; * script.Execute(); * result.wasSuccessful = true; * return result; * }*/ private ImportResultSet executeSQLscript() { ImportResultSet result = new ImportResultSet(); proc = new Process { StartInfo = new ProcessStartInfo { FileName = "resources/mysqldump/mysql.exe", Arguments = buildMysqlexeArguments().ToString(), UseShellExecute = false, RedirectStandardOutput = true, //prepei na diavastoun me ti seira pou ginonte ta redirect alliws kolaei se endless loop RedirectStandardError = true, RedirectStandardInput = true, CreateNoWindow = true } }; Console.WriteLine("Executing mysql.exe now."); proc.Start(); try { StreamReader sr = new StreamReader(config.scriptPath); int index = 1; string line = ""; while ((line = sr.ReadLine()) != null) { proc.StandardInput.WriteLine(line); onProgress(index); index++; //Console.WriteLine("Log file line: "+line); } proc.StandardInput.Close(); //ama den ginei auto perimenei endlessly gia input sr.Close(); }catch (Exception ex) { result.wasSuccessful = false; if (proc == null || proc.HasExited) { result.errorMessage = "Mysql.exe import proccess was killed."; } else { result.errorMessage = "Mysql import: " + ex.Message; } } try { while (!proc.StandardOutput.EndOfStream) { string line = proc.StandardOutput.ReadLine(); Console.WriteLine("Mysql.exe output:" + line); } while (!proc.StandardError.EndOfStream) { string line = proc.StandardError.ReadLine(); result.errorMessage += line + "\n"; Console.WriteLine("Mysql.exe error:" + line); } proc.WaitForExit(); } catch (NullReferenceException ex) { Console.WriteLine("Mysql.exe null reference exception on proccess: " + ex.Message); } if (proc == null || proc.ExitCode != 0) { result.wasSuccessful = false; if (proc == null) { result.errorMessage = "Mysql.exe import proccess was killed."; } } else { result.wasSuccessful = true; } return(result); }