MySQL backup s PHP?
 
G-force11. jan 2010 12:18:20Pridružen od:
31. mar 2008
719 objav
+336-451
#1Nikakor mi ne uspe narediti backup mysql baze z uporabo PHP.

Stran testiram na WAMP server, program mysqldump se nahaja v C:\wamp\bin\mysql\mysql5.1.33\bin

Poskusil sem z$backupFile = DB_NAME . date("Y-m-d-H-i-s") . '.sql';
$command = "mysqldump -u" . DB_USER . " -p" . DB_PASSWORD . " " . DB_NAME . " > {$backupFile}";
system($command);
in$backupFile = DB_NAME . date("Y-m-d-H-i-s") . '.sql';
$command = "C:\wamp\bin\mysql\mysql5.1.33\bin\mysqldump -u" . DB_USER . " -p" . DB_PASSWORD . " " . DB_NAME . " > {$backupFile}";
system($command);
system($command) sem poskusil zamenjati tudi z exec($command) vendar enostavno ne dela. Ko poženem stran mi stran nalaga in se nikoli ne ustavi. Ustvari se samo prazna .sql datoteka.

Če grem preko cmd.exe (run->cmd) najprej v direktori C:\wamp\bin\mysql\mysql5.1.33\bin\ in nato poženem mysqldump -uroot -p imebaze > rezerva.sql mi rezervo baze uspešno ustvari v direktoriju C:\wamp\bin\mysql\mysql5.1.33\bin\

(vrednosti konstant so ok, ker sem $command preveril z echo)

Kje je napaka? Kako bi lahko s PHP&mysldump ustvaril backup?
nazadnje urejal G-force 11. jan 2010 12:23:08
všeč(0)ni všeč(0)spam(0)
 
Roky11. jan 2010 12:30:31Pridružen od:
9. apr 2008
1879 objav
+1475-17783
#2$data = exec('mysqldump --opt -q -u root -h host -ppassword mojabaza, $databaseOuput);

if (!empty($databaseOuput)) {
// import query per query
mysql_select_db($dbName);

$query = '';
foreach($databaseOuput as $row) {
if (isset($row[strlen($row)-1]) && $row[strlen($row)-1] == ';') {
$query .= "\n".$row;
$result = mysql_query($query);

if (!$result) {
$data = $query ."\n\n".mysql_error();
break;
}

$query = "";
} else {
$row = str_replace(' USING BTREE', '', $row);
$query .= "\n".$row;
}
}
}
nazadnje urejal Roky 11. jan 2010 12:31:01
všeč(0)ni všeč(0)spam(0)
 
G-force11. jan 2010 12:37:52Pridružen od:
31. mar 2008
719 objav
+336-451
#3Pri tej kodi mi naredi enako. Stran nalaga in jo nikoli ne naloži, ustvari se samo prazna .sql datoteka :/ (sicer je pa baza zelo majhna, preko cmd mi backup ustvari takoj...).
nazadnje urejal G-force 11. jan 2010 12:39:45
všeč(0)ni všeč(0)spam(0)
 
Roky11. jan 2010 12:43:48Pridružen od:
9. apr 2008
1879 objav
+1475-17783
#4G-force, pri tej kodi manjka zgoraj še mysql_connect na bazo kamor hočeš kopirat. Če hočeš samo celotno bazo skopiran lahko uporabiš:$dbName = 'mojabaza';
$dbFilename = $dbName.'.sql';

var_dump(exec('mysqldump --opt --skip-extended-insert --result-file='.$dbFilename.' -u root -h host -ppassword '.$dbName); // real import
všeč(0)ni všeč(0)spam(0)
 
G-force11. jan 2010 17:11:25Pridružen od:
31. mar 2008
719 objav
+336-451
#5Roky, hvala za pomoč vendar je bil problem drugje. Pa bom povedal rešitev, da se ne bo še kdo zajebaval tako dolgo kot sem se jaz :/

1. Kar se exec() tiče mi ni delovalo, ker naj bi bil za to kriv bug. V sporočilu [15 Sep 2008 5:01pm UTC] je "vlabella" našel rešitev. Pred exec() je potrebno poklicati funkcijo session_write_close(); (seveda v primeru, da ste predhodno na strani klicali session_start(), kar velja za moj primer, čeprav tega nisem omenil).

2. Kljub session_write_close(); pa mi spodnja koda še vedno ni delovala.
$backupFile = DB_NAME . date("Y-m-d-H-i-s") . '.sql';
$command = "mysqldump -u" . DB_USER . " -p" . DB_PASSWORD . " " . DB_NAME . " > {$backupFile}";
session_write_close();
exec($command);
Ker sem počasi imel vsega dovolj, sem program mysldump iz C:\wamp\bin\mysql\mysql5.1.33\bin prekopiral še v mapo, kjer imam stran C:\wamp\www\mojastra\

3. Vendar koda še vedno ni delala. Po kombiniranju s cmd-jem pa sem ugotovil, da kljub temu, da za root nimam gesla mysqldump še vedno vpraša po njem in moraš pač klikniti na enter, seveda v php kodi to ni možno zato se je stran spet loadala v nedogled. Odstrani sem -p in spodnja koda (kooooooooooončno) deluje :D
$backupFile = DB_NAME . date("Y-m-d-H-i-s") . '.sql';
$command = "mysqldump -u" . DB_USER . " " . DB_NAME . " > {$backupFile}";
session_write_close();
exec($command);
nazadnje urejal G-force 11. jan 2010 17:16:24
všeč(+1)ni všeč(0)spam(0)
 
stran 1 od 1 |<<1>>|