Давайте я сделаю краткое введение; У меня есть 2 сервера базы данных, на которых я использовал второй сервер БД для резервного копирования одной из таблиц первого сервера БД.
Проблема в том, что в таблице есть столбец, в котором хранится значение BLOB, не знаю, в каком именно файле она хранится, поэтому я попытался использовать байтовый массив, чтобы сохранить данные резервной копии во 2-й таблице и восстановить эти данные в 1-й таблице, когда она необходимо.
Вот как я работал,
Сначала я выбираю данные из 1-й таблицы и резервное копирование (вставка) во 2-ю таблицу
//inserting byte[] to 2nd db
String tmpBatchInsert = String.Format(@"INSERT INTO 2nd_table (VERSION, PRODUCTID, ROUTE) VALUES ('{0}',{1},@route);", version, tmpInsertValue);
MySqlConnection connMySQL2 = new MySqlConnection(connString);
MySqlCommand cmdMySQL2 = new MySqlCommand(tmpBatchInsert, connMySQL2);
cmdMySQL2.Parameters.AddWithValue("@route", routeByte);
connMySQL2.Open();
try
{
cmdMySQL2.ExecuteNonQuery();
}
catch
{
MessageBox.Show("Found data duplicate in an active database, skip saving..", "Data duplicate!");
}
connMySQL2.Close();
Работает отлично (я проверил, посмотрев на сохраненное значение длины ROUTE
, значение BLOB)
img: данные BLOB-объектов и их длина во 2-й таблице
Но когда я попытался восстановить таблицу 1rt, используя аналогичный код, но изменив таблицу вставки.
String tmpBatchInsert = String.Format(@"INSERT INTO 1st_table (PRODUCTID, ROUTE) VALUES ({0},@route);", tmpInsertValue);
MySqlConnection connMySQL2 = new MySqlConnection(connString2);
MySqlCommand cmdMySQL2 = new MySqlCommand(tmpBatchInsert, connMySQL2);
cmdMySQL2.Parameters.Add("@route", MySqlDbType.Blob).Value = routeByte;
connMySQL2.Open();
cmdMySQL2.ExecuteNonQuery();
//MessageBox.Show("Found data duplicate in active database, skip saving..", "Data duplicate!");
connMySQL2.Close();
В нем хранится неправильное значение Blob.
img2: длина BLOB-объекта на 1-м столе
Интересно, что я пропустил? Пожалуйста, на любое предложение, спасибо.
Я получил эту идею от this и Преобразования в байтовый массив после чтения BLOB из SQL в C #
Что я пробовал?
Я был отлажен с помощью Visual Studio 2017 и обнаружил, что значение get из 2nd все еще верно.
строка кода и быстрый просмотр данных для метода запроса для вставки данных в 1-ю таблицу
Я думал, что это может быть приведение, когда я получаю данные, подобные thread , но это все еще не решило мою проблему (