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

Обсуждение возникших проблем, предложений и ошибок MyDAC компонентов
imobile
Сообщения: 103
Зарегистрирован: Сб 12 ноя 2011 00:12

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

Сообщение imobile » Чт 31 янв 2013 15:25

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

AndreyZ
Devart Team
Сообщения: 328
Зарегистрирован: Чт 08 сен 2011 13:18

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

Сообщение AndreyZ » Пт 01 фев 2013 09:50

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

imobile
Сообщения: 103
Зарегистрирован: Сб 12 ноя 2011 00:12

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

Сообщение imobile » Пт 01 фев 2013 10:51

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. Как только данные не будут сохраняться, и я разберусь, в чем причина я вам пришлю пример.

imobile
Сообщения: 103
Зарегистрирован: Сб 12 ноя 2011 00:12

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

Сообщение imobile » Пт 01 фев 2013 11:59

Сделал те же действия проблема и понял, что ошибка целиком в моей программе. Я забыл переключить бд на основную.
Спасибо, что помогли разобраться.

AndreyZ
Devart Team
Сообщения: 328
Зарегистрирован: Чт 08 сен 2011 13:18

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

Сообщение AndreyZ » Пт 01 фев 2013 16:02

Пожалуйста. Я рад что смог помочь. Пишите нам если возникнут дальнейшие вопросы по MyDAC.

imobile
Сообщения: 103
Зарегистрирован: Сб 12 ноя 2011 00:12

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

Сообщение imobile » Пт 12 апр 2013 09:28

Здравствуйте.
Стало появляться исключение
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;

imobile
Сообщения: 103
Зарегистрирован: Сб 12 ноя 2011 00:12

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

Сообщение imobile » Пт 12 апр 2013 13:47

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

DemetrionQ
Devart Team
Сообщения: 51
Зарегистрирован: Пн 28 янв 2013 11:54

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

Сообщение DemetrionQ » Пт 12 апр 2013 17:31

Здравствуйте.

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

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

imobile
Сообщения: 103
Зарегистрирован: Сб 12 ноя 2011 00:12

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

Сообщение imobile » Пт 12 апр 2013 19:52

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

DemetrionQ
Devart Team
Сообщения: 51
Зарегистрирован: Пн 28 янв 2013 11:54

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

Сообщение DemetrionQ » Ср 17 апр 2013 09:55

Здравствуйте.

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

imobile
Сообщения: 103
Зарегистрирован: Сб 12 ноя 2011 00:12

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

Сообщение imobile » Чт 18 апр 2013 07:51

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

DemetrionQ
Devart Team
Сообщения: 51
Зарегистрирован: Пн 28 янв 2013 11:54

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

Сообщение DemetrionQ » Пт 19 апр 2013 10:58

Здравствуйте.

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

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

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

imobile
Сообщения: 103
Зарегистрирован: Сб 12 ноя 2011 00:12

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

Сообщение imobile » Пт 19 апр 2013 16:05

Спасибо, то что надо.

imobile
Сообщения: 103
Зарегистрирован: Сб 12 ноя 2011 00:12

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

Сообщение imobile » Вт 21 май 2013 09:29

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), но сохранились таблицы полностью, без условий.

DemetrionQ
Devart Team
Сообщения: 51
Зарегистрирован: Пн 28 янв 2013 11:54

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

Сообщение DemetrionQ » Вт 21 май 2013 13:10

Здравствуйте.

При вызове 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();
  }

Закрыто