Member 13174280 Ответов: 2

Ошибка отказано в доступе - mysqlbackup n windows


After read this
https://www.codeproject.com/Articles/256466/MySqlBackup-NET#features

I have instaalled from NuGet
Install-Package MySqlBackup.NET -Version 2.1.0

MySql.Data and MySqlBackup are present on Reference

The project is Windows.Form on Win10


Что я уже пробовал:

private void Backup()
        {
            string constring = "server=localhost; Database=db_catalogo; Uid=root; Pwd=test;";
            constring += "charset=utf8;convertzerodatetime=true;";

            string file = "D:\\backup.sql";
            using (MySqlConnection conn = new MySqlConnection(constring))
            {
                using (MySqlCommand cmd = new MySqlCommand())
                {
                    using (MySqlBackup mb = new MySqlBackup(cmd))
                    {
                        cmd.Connection = conn;
                        conn.Open();
                        mb.ExportInfo.AddCreateDatabase = true;
                        mb.ExportInfo.ExportTableStructure = true;
                        mb.ExportInfo.ExportRows = false;

                        
                        mb.ExportToFile(file);

                        // ???? Access Denied //
                        // the backup.sql directory is created
                        // and not the file backup.sql

                        
                        
                        conn.Close();
                    }
                }
            }
        }

<\код>

2 Ответов

Рейтинг:
1

OriginalGriff

Вы можете посмотреть здесь: Резервное копирование базы данных SQL на языке C#[^] - он основан на SQL Server, но почти все относится и к MySql. Обратите внимание на последний раздел "Итак, теперь это сработает?", который, вероятно, объясняет, в чем заключается ваша проблема.


Рейтинг:
1

Member 13174280

Резервное копирование : экспорт всех таблиц и данных, присутствующих в схеме БД

<br />
<pre>List<string> tbexport = new List<string>();</pre><br />
<br />
ex: <pre> //tbex.Add("tb_foto");<br />
          //tbex.Add("tb_test");<br />
<br />
empty = all Table<br />
</pre><br />


<br />
using (MySqlConnection conn = new MySqlConnection(constring))<br />
            {<br />
                using (MySqlCommand cmd = new MySqlCommand())<br />
                {<br />
                    using (MySqlBackup mb = new MySqlBackup(cmd))<br />
                    {<br />
                        cmd.Connection = conn;<br />
                        conn.Open();<br />
                        mb.ExportInfo.AddCreateDatabase = true;          <br />
                        mb.ExportInfo.ExportTableStructure = true;        <br />
                        mb.ExportInfo.ExportRows = true;                 <br />
                        mb.ExportInfo.TablesToBeExportedList = tbexport; <br />
<br />
                        file = path + "db_catalogo.sql";<br />
                        mb.ExportToFile(file);<br />
<br />
                        conn.Close();<br />
                    }<br />
                }<br />
            }<br />


Восстановление : создайте схему БД, если она не существует, и всю таблицу
в строке подключения не указывайте имя базы данных

<br />
<pre><br />
string constring = "server=localhost;user=root;pwd=your pwd";<br />
using (MySqlConnection conn = new MySqlConnection(constring))<br />
            {<br />
                using (MySqlCommand cmd = new MySqlCommand())<br />
                {<br />
                    using (MySqlBackup mb = new MySqlBackup(cmd))<br />
                    {<br />
                        cmd.Connection = conn;<br />
                        conn.Open();                        <br />
                        mb.ImportFromFile(file);<br />
                        conn.Close();<br />
                    }<br />
                }      <br />
      }<br />
</pre><br />