public override void LoadDatabase(IDatabaseSource dst) { MySqlStoredConnection sconn = MySqlSettings.CheckMySqlSource(dst); MySqlSettings cfg = GlobalSettings.Pages.PageByName("mysql_client") as MySqlSettings; System.Diagnostics.Process p = new System.Diagnostics.Process(); p.StartInfo.FileName = cfg.GetToolPath("mysql"); StringBuilder pars = new StringBuilder(); pars.AppendFormat("--user={0} ", sconn.Login); pars.AppendFormat("--password={0} ", sconn.Password); pars.AppendFormat("--host={0} ", sconn.DataSource); pars.AppendFormat("--port={0} ", sconn.Port); pars.Append("--verbose "); pars.Append(dst.DatabaseName ?? sconn.ExplicitDatabaseName); pars.Append(" "); p.StartInfo.Arguments = pars.ToString(); p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardInput = true; p.StartInfo.RedirectStandardError = true; Logging.Debug("Running mysql " + pars.ToString()); p.Start(); Thread thr = new Thread(() => ReadFromErrStream(p)); thr.Start(); using (FileStream fr = new FileInfo(Filename).OpenRead()) { IOTool.CopyStream(fr, p.StandardInput.BaseStream); } p.StandardInput.Close(); p.WaitForExit(); thr.Join(); }
public static MySqlStoredConnection CheckMySqlSource(IDatabaseSource source) { MySqlStoredConnection sconn = source.Connection.StoredConnection as MySqlStoredConnection; if (sconn == null) { throw new InvalidInputError("DAE-00338 " + Texts.Get("s_connection_required$engine", "engine", "MySQL")); } return(sconn); }
public override void RunDirectCopy(IDatabaseSource source, DatabaseCopyOptions copyOpts) { MySqlStoredConnection sconn = MySqlSettings.CheckMySqlSource(source); MySqlSettings cfg = GlobalSettings.Pages.PageByName("mysql_client") as MySqlSettings; System.Diagnostics.Process p = new System.Diagnostics.Process(); p.StartInfo.FileName = cfg.GetToolPath("mysqldump"); StringBuilder pars = new StringBuilder(); pars.AppendFormat("--user={0} ", sconn.Login); pars.AppendFormat("--password={0} ", sconn.Password); pars.AppendFormat("--host={0} ", sconn.DataSource); pars.AppendFormat("--port={0} ", sconn.Port); pars.Append("--routines "); if (IncludeDropStatement) { pars.Append("--add-drop-table "); } else { pars.Append("--skip-add-drop-table "); } pars.Append("--verbose "); pars.Append(source.DatabaseName ?? sconn.ExplicitDatabaseName); pars.Append(" "); if (copyOpts.CopyMembers.TableFilter != null) { pars.Append("--tables "); foreach (NameWithSchema table in copyOpts.CopyMembers.TableFilter) { pars.Append(table.Name + " "); } } p.StartInfo.Arguments = pars.ToString(); p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.RedirectStandardError = true; Logging.Debug("Running mysqldump " + pars.ToString()); p.Start(); Thread thr = new Thread(() => ReadFromErrStream(p)); thr.Start(); //Console.Write(p.StandardOutput.ReadToEnd()); using (FileStream fw = new FileStream(GetWorkingFileName(), FileMode.Create)) { IOTool.CopyStream(p.StandardOutput.BaseStream, fw); } p.WaitForExit(); thr.Join(); FinalizeFileName(); }
public MySqlConnFrame(MySqlStoredConnection conn) : base(conn) { InitializeComponent(); tbxDataSource.Text = conn.DataSource; tbxLogin.Text = conn.Login; tbxPassword.Text = conn.Password; tbxPort.Text = conn.Port.ToString(); cbxCharacterSet.Items.Add(new EncodingItem { Title = Texts.Get("s_default"), WebName = null }); foreach (var i in EncodingTypeConverter.EncodingItems) { cbxCharacterSet.Items.Add(i); } cbxCharacterSet.SelectedIndex = 0; }
public override void SaveConnection() { MySqlStoredConnection conn = (MySqlStoredConnection)m_conn; conn.DataSource = tbxDataSource.Text; conn.Login = tbxLogin.Text; conn.Password = tbxPassword.Text; EncodingItem enc = (EncodingItem)cbxCharacterSet.SelectedItem; if (enc.WebName == null) { conn.CharacterSet = null; } else { conn.CharacterSet = Encoding.GetEncoding(enc.WebName); } try { conn.Port = Int32.Parse(tbxPort.Text); } catch { conn.Port = 3306; } }