Перекидка баз MyDamp неполучается.
Перекидка баз MyDamp неполучается.
Здравствуйте.
Есть два компьютера с одинаковыми названиями БД. надо на первом востонавить БД из другого компьютера под другим названием бд.Я на одном сохраняю через майдамп->savetofile. А на другом выбираю в коннекте другое название бд, в дампе указываю на это соединение и вызываю ресторе. Дамп в результате затирает основную бд, а то что я указал остается чистой. Как сделать правильно?
Есть два компьютера с одинаковыми названиями БД. надо на первом востонавить БД из другого компьютера под другим названием бд.Я на одном сохраняю через майдамп->savetofile. А на другом выбираю в коннекте другое название бд, в дампе указываю на это соединение и вызываю ресторе. Дамп в результате затирает основную бд, а то что я указал остается чистой. Как сделать правильно?
Re: Перекидка баз MyDamp неполучается.
Вот код
Код: Выделить всё
int TForm2::writes()
{
if (FolderDialog1->Execute())
{
Form2->MyConnection2->Close();
Form2->MyConnection2->Options->UseUnicode = false; // перед дампом выключаем UseUnicode
Form2->MyConnection2->Options->Charset = "utf8"; // и устанавливаем Charset в utf8
Form2->MyConnection2->Open();
MyDump1->Connection = Form2->MyConnection2;
MyDump1->Connection->Close();
MyDump1->TableNames="";
AnsiString fn=FolderDialog1->Directory+"\\conv.bin";
ProgressBar1->Position=0;
MyDump1->BackupToFile(fn);
MyDump1->Connection->Close();
Form2->MyConnection2->Options->UseUnicode = true;
ProgressBar1->Position=0;
}
}
//-----------------------------------------------------------------
if (Form2->OpenDialog1->Execute()) {
Form2->MyConnection2->Close();
Form2->MyConnection2->Database=AdvComboBox2->Text;//<<<------------НЕ Влияет
Form2->MyConnection2->Options->UseUnicode = false; // перед дампом выключаем UseUnicode
Form2->MyConnection2->Options->Charset = "utf8"; // и устанавливаем Charset в utf8
Form2->MyConnection2->Open();
Form2->MyDump1->Connection = Form2->MyConnection2;
Form2->MyDump1->Connection->Close();
Form2->MyDump1->TableNames="";
AnsiString fn=Form2->OpenDialog1->FileName;
//ProgressBar1->Position=0;
Form2->MyDump1->RestoreFromFile(fn);
Form2->MyConnection2->Close();
Form2->MyConnection2->Database=AdvComboBox1->Text;
Form2->MyConnection2->Options->UseUnicode = true; // перед дампом выключаем UseUnicode
Form2->MyConnection2->Options->Charset = "utf8"; // и устанавливаем Charset в utf8
Form2->MyConnection2->Open();
Form2->MyDump1->Connection = Form2->MyConnection2;
//ProgressBar1->Position=0;
}
Re: Перекидка баз MyDamp неполучается.
Здравствуйте,
Для решения проблемы Вам следует убрать значение doDatabase из свойства TMyDump.Objects.
Для решения проблемы Вам следует убрать значение doDatabase из свойства TMyDump.Objects.
Re: Перекидка баз MyDamp неполучается.
А у меня false стоит.
Re: Перекидка баз MyDamp неполучается.
галочки стоят только doTables и doData
Re: Перекидка баз MyDamp неполучается.
Я не могу повторить данную проблему. Я использовал следующий код:Измените пожалуйста данный код так чтобы он демонстрировал проблему. Если проблема возникает при использовании данного кода, сообщите пожалуйста следующую информацию:
- точную версию MyDAC. Вы можете найти ее на закладке About редактора TMyConnection;
- точную версию Вашей IDE.
Код: Выделить всё
{
TMyConnection *con = new TMyConnection(NULL);
TMyDump *dm = new TMyDump(NULL);
try
{
con->Server = "server";
con->Port = 3306;
con->Username = "username";
con->Password = "password";
con->Database = "database1";
con->LoginPrompt = False;
dm->Connection = con;
dm->BackupToFile("C:\\bk.bk");
con->Close();
con->Database = "database2";
dm->RestoreFromFile("C:\\bk.bk");
}
__finally
{
dm->Free();
con->Free();
}
}
- точную версию MyDAC. Вы можете найти ее на закладке About редактора TMyConnection;
- точную версию Вашей IDE.
Re: Перекидка баз MyDamp неполучается.
Все нашел. У меня стоит логин промт.
Я изменяю название БД динамически в программе, но при операции восстановления выскакивает окно соединения с БД. Я думая, что БД изменилась и в окошке правильная стоит жму коннект не смотря. А там старая БД. Логин я наверное уберу при старте, но кажется, что не совсем правильно показывать не активную БД.
Я изменяю название БД динамически в программе, но при операции восстановления выскакивает окно соединения с БД. Я думая, что БД изменилась и в окошке правильная стоит жму коннект не смотря. А там старая БД. Логин я наверное уберу при старте, но кажется, что не совсем правильно показывать не активную БД.
Re: Перекидка баз MyDamp неполучается.
Для решения данной проблемы, Вам следует выполнить следующие шаги:
- кинуть на форму компонент TMyConnectDialog (если Вы его еще не используете);
- установить свойство TMyConnection->ConnectDialog в TMyConnectDialog;
- установить свойство TMyConnectDialog->StoreLogInfo в False.
Например:Вы можете найти описание опции StoreLogInfo в документации MyDAC.
- кинуть на форму компонент TMyConnectDialog (если Вы его еще не используете);
- установить свойство TMyConnection->ConnectDialog в TMyConnectDialog;
- установить свойство TMyConnectDialog->StoreLogInfo в False.
Например:
Код: Выделить всё
MyConnection1->ConnectDialog = MyConnectDialog1;
MyConnectDialog1->StoreLogInfo = False;
MyConnection1->Database = "database";
MyConnection1->Open();
Re: Перекидка баз MyDamp неполучается.
А почему если сохранить бд через mydamp с одним параметром doData она не восстонавливается? Пишет, количество колонок разная?
Re: Перекидка баз MyDamp неполучается.
И если можно поподробнее про дамп. Мне надо сделать два вида бэкапа:
1.с сохранением структуры(т.е при восстоновлении структура таблицы восстаналиваются в прежнем виде.
2 без сохранения структуры, т.е. при восстонавлении структура таблицы не восстанавливается, а восстанавливаются только данные.(вроде insert into mytable(id,name,val) values(1,"sdfg",33)
Я думал, что за это отвечают dodata,dotable.
1.с сохранением структуры(т.е при восстоновлении структура таблицы восстаналиваются в прежнем виде.
2 без сохранения структуры, т.е. при восстонавлении структура таблицы не восстанавливается, а восстанавливаются только данные.(вроде insert into mytable(id,name,val) values(1,"sdfg",33)
Я думал, что за это отвечают dodata,dotable.
Re: Перекидка баз MyDamp неполучается.
Если Вы используете опцию doData без doTables, TMyDump выгружает в файл только данные. При таком использовании Вам необходимо контролировать что таблица в которую Вы хотите восстановить данные имеет такое же количество столбцов как и исходная таблица.А почему если сохранить бд через mydamp с одним параметром doData она не восстонавливается? Пишет, количество колонок разная?
Для того чтобы выполнить бэкап с сохранением структуры, необходимо установить обе опции doData и doTables.
Для того чтобы выполнить бэкап без сохранения структуры, необходимо установить только опцию doData.
Re: Перекидка баз MyDamp неполучается.
Вроде ничего не менял.Проверю как-нибудь.
И остался вопрос, как сгенерировать типа только dodata, но с указанием столбцов куда вносить данные?Чтоб не следить за структурой таблиц, но с очисткой от прежних данных.
И остался вопрос, как сгенерировать типа только dodata, но с указанием столбцов куда вносить данные?Чтоб не следить за структурой таблиц, но с очисткой от прежних данных.
Re: Перекидка баз MyDamp неполучается.
Для получения только данных с указанием столбцов, Вам следует установить свойство TMyDump.Objects в doData и свойство TMyDump.Options.CompleteInsert в True.
Re: Перекидка баз MyDamp неполучается.
Извините, но у меня еще вопрос.
doData=true;
doTable=true;
При сохранении на диск, а затем восстановлении часть данных исчезло без предупреждений.
Открыл скрипт, который сгенерировал дамп
а там удалить таблицу такую-то
создать таблицу такую-то
А дальше дамп для такой-то таблицы. И часть таблиц пустые. Как такое могдло произойти? Данные там точно есть, просматриваю на исходном компьютере.
doData=true;
doTable=true;
При сохранении на диск, а затем восстановлении часть данных исчезло без предупреждений.
Открыл скрипт, который сгенерировал дамп
а там удалить таблицу такую-то
создать таблицу такую-то
А дальше дамп для такой-то таблицы. И часть таблиц пустые. Как такое могдло произойти? Данные там точно есть, просматриваю на исходном компьютере.