Страница 2 из 3

Re: Перекидка баз MyDamp неполучается.

Добавлено: Чт 31 янв 2013 15:25
imobile
Повторный экспорт принес желаемый результат, однако хочется знать, какие опции могли повлиять на результат, чтоб не повторилось в будующем?

Re: Перекидка баз MyDamp неполучается.

Добавлено: Пт 01 фев 2013 09:50
AndreyZ
Пришлите пожалуйста пример демонстрирующий данную проблему на andreyz*devart*com . Также сообщите следующую информацию:
- точную версию MyDAC. Вы можете найти ее на закладке About редактора TMyConnection;
- точную версию MySQL сервера и клиента. Вы можете найти их на закладке Info редактора TMyConnection;
- точную версию Вашей IDE.

Re: Перекидка баз MyDamp неполучается.

Добавлено: Пт 01 фев 2013 10:51
imobile
MySql data access prof edition 7.6.11
mysql 5.5.15
Установлен и unidac prof 4.6.11
17.0.4723.55752
1. Что заметил, если на флэшке не хватает памяти, то при восстановлении появляются иероглифы ошибок не возникает.
2.При простое иде появляется ошибка 10053, со знаками ??????????????????????
3. Как только данные не будут сохраняться, и я разберусь, в чем причина я вам пришлю пример.

Re: Перекидка баз MyDamp неполучается.

Добавлено: Пт 01 фев 2013 11:59
imobile
Сделал те же действия проблема и понял, что ошибка целиком в моей программе. Я забыл переключить бд на основную.
Спасибо, что помогли разобраться.

Re: Перекидка баз MyDamp неполучается.

Добавлено: Пт 01 фев 2013 16:02
AndreyZ
Пожалуйста. Я рад что смог помочь. Пишите нам если возникнут дальнейшие вопросы по MyDAC.

Re: Перекидка баз MyDamp неполучается.

Добавлено: Пт 12 апр 2013 09:28
imobile
Здравствуйте.
Стало появляться исключение
First chance exception at $00625955. Exception class $C0000005 with message 'access violation at 0x00625955: read of address 0x00000000'. Process UchetBuilder.exe (1720)

Код: Выделить всё

{
if (OpenDialog1->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=OpenDialog1->FileName;
 ProgressBar1->Position=0;
MyDump1->RestoreFromFile(fn);<<----------------Здесь ошибка
  Form2->MyConnection2->Close();
  Form2->MyConnection2->Options->UseUnicode = true; // перед дампом выключаем UseUnicode
  Form2->MyConnection2->Options->Charset = "utf8"; // и устанавливаем Charset в utf8
  Form2->MyConnection2->Open();
  MyDump1->Connection = Form2->MyConnection2;
ProgressBar1->Position=0;

Re: Перекидка баз MyDamp неполучается.

Добавлено: Пт 12 апр 2013 13:47
imobile
Файл был поврежден.
Хочу обратить внимание, что mydump не выводит ошибки в след случаях.
1. Идет сохранение, диск переполнен.
2. Идет восстановление, в файле ерунда.
3. Ошибка чтения файла(поврежден)
Хотелось бы, чтоб выдавало соответствующее предупреждение.

Re: Перекидка баз MyDamp неполучается.

Добавлено: Пт 12 апр 2013 17:31
DemetrionQ
Здравствуйте.

Для чтения и сохранения файлов TMyDump использует стандартный класс TFileStream. TMyDump отображает все ошибки, которые генерирует TFileStream.

Мы провели тестирование описанных вами ситуаций - в каждой из них возникает сообщение об ошибке.

Re: Перекидка баз MyDamp неполучается.

Добавлено: Пт 12 апр 2013 19:52
imobile
Ни разу не видел сообщения от дамп, может какие-то настройки у меня неправильные win7.
Исключение генерировалось когда флэшка была отформатирована с размером кластера 16 под фат 32.
Попробуйте для тестирования в сохраненный дамп, с середины исправить текст на произвольные, а затем восстановить.

Re: Перекидка баз MyDamp неполучается.

Добавлено: Ср 17 апр 2013 09:55
DemetrionQ
Здравствуйте.

При попытке выполнить TMyDump.RestoreFromFile из файла с некорректными данными возникает ошибка SQL синтаксиса. Если модификации сохранённого файла не нарушают SQL синтаксис, то невозможно определить, что файл был испорчен.
Пожалуйста, пришлите мне на dmitryk*devart*com некорректный файл, восстановление из которого не вызывает ошибки.

Re: Перекидка баз MyDamp неполучается.

Добавлено: Чт 18 апр 2013 07:51
imobile
К сожалению, файл удалил.
Делал сохранение в файл процедурой выше. На флэшке было мало памяти, я не знал. Сохранилось быстрей че надо, а при восстановлении восстановилось быстрей, только части таблиц не было. При просмотре текстовым редакторе после середины дампа была абракадабра, никаких сообщений не было, случайно заметил по отсутствующим данным. Повторная перезапись этого файла, дала тот же результат, пока не понял, что не хватает памяти. Освободил и место и все заработало.
А не подскажите, можно ли как-то фильтровать данные при дампе? Наподобие, сохранять только where st=0?

Re: Перекидка баз MyDamp неполучается.

Добавлено: Пт 19 апр 2013 10:58
DemetrionQ
Здравствуйте.

Для частичного сохранения данных вы можете использовать метод TMyDump.BackupQuery, например:

Код: Выделить всё

  MyDump1.BackupQuery('select * from YourTable where st=0');
Детальную информацию о TMyDump.BackupQuery вы можете найти в документации MyDAC.

Re: Перекидка баз MyDamp неполучается.

Добавлено: Пт 19 апр 2013 16:05
imobile
Спасибо, то что надо.

Re: Перекидка баз MyDamp неполучается.

Добавлено: Вт 21 май 2013 09:29
imobile
DemetrionQ писал(а):Здравствуйте.

Для частичного сохранения данных вы можете использовать метод TMyDump.BackupQuery, например:

Код: Выделить всё

  MyDump1.BackupQuery('select * from YourTable where st=0');
Детальную информацию о TMyDump.BackupQuery вы можете найти в документации MyDAC.
Решил попробовать, возникло несколько вопросов. Детальной информации в справке не нашел. Пример тоже не прояснил. Непонятен принцип работы TMyDump.BackupQuery. У меня много таблиц и задача состоит в сохранении в 1 файл наподобие MyDump1->BackupToFile(fname);, но стой лишь разницей, что должно быть по условию. Если можно, на примере трех таблиц с сохранением в один файл. вот условия:

Код: Выделить всё

 SELECT * FROM MYTABLE1
 SELECT * FROM MYTABLE2 WHERE MYVARIBLE=5
 SELECT * FROM MYTABLE3 INNER JOIN MYTABLE1 ON MYTABLE3.VAR1=MYTABLE1.VAR2
Я попробовал занести эти значения последовательно через TMyDump.BackupQuery а потом вызвать MyDump1->BackupToFile(fname), но сохранились таблицы полностью, без условий.

Re: Перекидка баз MyDamp неполучается.

Добавлено: Вт 21 май 2013 13:10
DemetrionQ
Здравствуйте.

При вызове TMyDump.BackupQuery данные сохраняются в TMyDump.SQL, после чего их можно сохранить в файл с помощью метода TMyDump.SQL.SaveToFile, например:

Код: Выделить всё

  MyDump1->BackupQuery("SELECT * FROM MYTABLE2 WHERE MYVARIBLE = 5");
  MyDump1->SQL->SaveToFile("C:\\TableBackup.txt");
Также вы можете сохранить в файл частичную выборку данных из таблицы с помощью метода TMyDump.BackupToFile следующим образом:

Код: Выделить всё

  MyDump1->BackupToFile("C:\\TableBackup.txt", "SELECT * FROM MYTABLE2 WHERE MYVARIBLE = 5");
При использовании методов BackupQuery и BackupToFile можно указывать только один SQL запрос. Чтобы сохранить результаты нескольких запросов, используйте следующий код:

Код: Выделить всё

  TStringList* SL = new TStringList;
  try
  {
	MyDump1->BackupQuery("SELECT * FROM MYTABLE1");
	SL->AddStrings(MyDump1->SQL);

	MyDump1->BackupQuery("SELECT * FROM MYTABLE2 WHERE MYVARIBLE=5");
	SL->AddStrings(MyDump1->SQL);

	MyDump1->BackupQuery("SELECT * FROM MYTABLE3 INNER JOIN MYTABLE1 ON MYTABLE3.VAR1=MYTABLE1.VAR2");
	SL->AddStrings(MyDump1->SQL);

	SL->SaveToFile("C:\\TableBackup.txt");
  }
  __finally
  {
	SL->Free();
  }