![]() |
Sicherung mit Myqsldump
GUten Morgen, ich habe mal wieder ein Problem:
Ich habe eine Anwendung wo eine Mysql datenbank im hintergrund läuft. ich möchte nun aus dem program heraus mit hilfe des Tool smysqldump eine Sicherung der Datenbank machen.
Delphi-Quellcode:
Das Programm wird auch gestartet. Es verlangt auch nach dem password. soweit uist alles richtig aber er leitet die ausgabe nicht in die datei um sondern auf den bildschirm.
ShellExecute(handle,'open','..\Mysql\mysqldump','--databases pze -u root -p > siko_333.sql','',SW_SHOW);
wo könnte der fehler sein. Vielen dank |
Re: Sicherung mit Myqsldump
Hallo Sebastian,
die Behandlung von pipes und redirection ist eine Funktionalität der Shell. Darum musst du beim Aufruf entweder die Shell aufrufen oder alles in einen Befehlsstapel verpacken. Freundliche Grüße |
Re: Sicherung mit Myqsldump
Zitat:
|
Re: Sicherung mit Myqsldump
Dein Befehl und seine Parameter und Schalter bilden dann einen einzigen string - die commandline:
Delphi-Quellcode:
Getippt und nicht getestet.
var
cmd, shell: string; begin shell := GetEnvironmentVariable('COMSPEC'); cmd := '/C ..\Mysql\mysqldump.exe --databases pze -u root -p > siko_333.sql'; ShellExecute(0, '', PAnsiChar(shell), PAnsiChar(cmd), '', SW_SHOW); end; Ein Befehlsstapel ist einfach eine CMD-Datei. Freundliche Grüße |
Re: Sicherung mit Myqsldump
Zitat:
|
Re: Sicherung mit Myqsldump
So besorgst du dir den vollen Namen der Shell - oder wie willst du das machen?
|
Re: Sicherung mit Myqsldump
Zitat:
Delphi-Quellcode:
shell:='cmd';
|
Re: Sicherung mit Myqsldump
Wie du magst.
Die relativen Pfade in deiner Kommandozeile solltest du aber noch auf absolute Pfade umstellen und den Namen der Ausgabedatei parametrisieren. Freundliche Grüße |
Re: Sicherung mit Myqsldump
Okay ich schicke dir jetzt mal meinen Quellcode.
Delphi-Quellcode:
Also das auslesen der cmd variablen geht . er öffnet auch das kommand fenster - aber nichts weiter .
var
cmd:String; shell: array [Byte] of Char; size: Dword; begin GetEnvironmentVariable('COMSPEC',shell,size); cmd := '..\Mysql\mysqldump.exe --databases pze -u root -p > siko_333.sql'; ShellExecute(0, 'open', shell, PAnsiChar(cmd), '', SW_SHOW); was kann ich noch tun |
Re: Sicherung mit Myqsldump
Nun, er wird die mysqldump.exe nicht finden. Aber das hat marabu doch schon gesagt:
Zitat:
|
Re: Sicherung mit Myqsldump
Warum verwendest du nicht die Funktion SysUtils.GetEnvironmentVariable() - sie ist schon auf Pascal-Bedürfnisse angepasst.
Probiere es zuerst mit einem internen Befehl wie DIR und informiere dich über den Schalter /C der Shell, den ich in meinem Beispiel verwendet habe. |
Re: Sicherung mit Myqsldump
Super... es hat geklappt. Habe doch tatsache den /c vergeseen danke allen :spin:
|
Re: Sicherung mit Myqsldump
Okay aber nun stellt sich das geleiche problem mit der rücksicherung das cmd startet es geht auch alles aber die ausgabe erfolgt auf dem bildschirm und nicht in einer datei
Delphi-Quellcode:
Vielen Dank
var
cmd:String; shell: array [Byte] of Char; size: Dword; begin OpenDialog1.Filter:='Sicherungsdatei|*.sql'; if OpenDialog1.Execute then begin GetEnvironmentVariable('COMSPEC',shell,size); cmd := '/c ..\Mysql\mysqldump.exe --databases pze -u root -p < ' +OpenDialog1.Files.GetText; ShellExecute(0, 'open', shell, PAnsiChar(cmd), '', SW_SHOW); ShowMessage('Sicherung angelegt'); end; |
Re: Sicherung mit Myqsldump
Du verwendest in deinem Code eine Eingabe- und keine Ausgabe-Umleitung.
|
Re: Sicherung mit Myqsldump
Das verstehe ich nicht "<" sagt doch aus das die datei eingelesen wird oder täusche ich mich undd wo si der ausgabestrom???
|
Re: Sicherung mit Myqsldump
@marabu
Na ja, er will jetzt ja auch einlesen und NICHT ausgeben. Aber zum Einlesen: das macht man mit mysql und NICHT mit mysqldump So ungefähr: mysql -ubenutzer -pppasswort datenbank<deinesqldatei Moin |
Re: Sicherung mit Myqsldump
In Beitrag #13 hast du dich beklagt, dass unerwünschte Ausgaben auf dem Bildschirm erscheinen. Unabhängig davon, ob die Befehlszeile korrekt ist oder nicht: Die Ausgaben kannst du nur mit einer Ausgabeumleitung vernichten, z.B. >nul
Freundliche Grüße |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz