tags:

views:

508

answers:

4

I keep getting empty files generated from running

$command = 'mysqldump --opt -h localhost -u username -p \'password\' dbname > \'backup 2009-04-15 09-57-13.sql\'';

command($command);

Anyone know what might be causing this? My password has strange characters in it, but works fine with connecting to the db.

I've ran exec($command, $return) and outputted the $return array and it is finding the command. I've also ran it with mysqldump > file.sql and the file contains

Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]
For more options, use mysqldump --help

So it would seem like the command is working.

+1  A: 

I believe there are no spaces between -u and the actual username.

host: localhost user: peter password: pwd

would become:

-hlocalhost -upeter -ppwd
Peter Perháč
+3  A: 

Remove the space between -p and the password. If it didn't work, try to remove the quotes from the password

from MySQL documentation:

If you use the short option form (-p), you cannot have a space between the option and the password.

however, it is fine to have space with -h and -u options

Aziz
A: 

To put it in plain english, make sure to use the following options (all of them).
--user=USERNAME
--host=localhost
--password=****

The next non-option phrase should be your database name. If the command is followed by another non-option phrase, it will be treated as table names.

$command="mysqldump --xml --host=localhost --user=USERNAME --password=***** DBNAME > XMLTABLE.xml";
system($command);
Vurk
A: 

This is how I have done it - output is with maximum gzip compression:

<?php exec("/usr/bin/mysqldump --opt --host=MYSQLHOSTNAME --user=MYSQLUSER --password=PASSWORD DATABASENAME | gzip -v -9 >DATABASENAME.". date("Y-m-d_H-i-s") . ".sql.gz");?>
Thomas