Seite 1 von 1

[solved]MySQL DB-Dump mit QProcess

Verfasst: 17. März 2010 08:30
von pixHub
Hallo,

angelehnt an http://www.qtforum.de/forum/viewtopic.p ... ut&start=0

habe ich versucht den output von mysqldump in eine Datei zu schreiben.

Code: Alles auswählen

if (!file.open(QIODevice::WriteOnly ) )
	       return;
   QDataStream outfile(&file);   
   QStringList output;
   QProcess *process = new QProcess();
   QString cmd= "/usr/local/mysql/bin/mysqldump";
   QStringList args;

   args << " --single-transaction DB -uuser -ppasswd -h host";
   std::cout<<"try to open: "<<cmd.toStdString()<<std::endl;
   process->start(cmd, args);

   if (!process->waitForStarted() )
      std::cout<<"process couldn't get opened"<<std::endl;

   // wait for finishing of the process
   process->waitForFinished();
   QTextStream *txt_stream = new QTextStream(process);

   while(!txt_stream->atEnd() )
   {
      std::cout<<"read output: ";
      QString tmp_str = txt_stream->readLine();
      output.append(tmp_str);
      std::cout<<tmp_str.toStdString()<<std::endl;

      if(txt_stream->atEnd() )
      {
         process->close();
         std::cout<<"process finished: "<<std::endl;
         outfile << output;     
      }
   }
Es kommt aber nur ein Rumpf (10 Zeilen) vom Dump an.

Muss ich da noch irgendwo zwischenpuffern?

Re: MySQL DB-Dump mit QProcess

Verfasst: 17. März 2010 18:02
von Christian81
pixHub hat geschrieben: Muss ich da noch irgendwo zwischenpuffern?
Könnte schon sein. Ausprobieren würde ich sagen. QProcess/QIOevice hat ja genug Signals welche die Daten liefern bzw. anzeigen dass Daten vorliegen.

Verfasst: 18. März 2010 12:58
von pixHub
ich hab den Fehler gefunden!
Meine Argumentliste zum Programm war nicht i.O. .
mit:

Code: Alles auswählen

argv << "$Datenbank"<< "-u$user"<< "-p$password"<< "-h$host";
funktioniert es.

Hilfreich ist

Code: Alles auswählen

myprocess->readAllStandardError();
So sieht man daß der Aufruf :

Code: Alles auswählen

args << " --single-transaction DB -uuser -ppasswd -h host";
ein "Access denied!" wirft.