I am just using mysqldump from php script , but it gives error saying unexpected end of file.
Please help , am stuck up.
**Error:**
sh: -c: line 1: syntax error: unexpected end of file
X-Powered-By: PHP/5.2.17
Content-type: text/html
Following is mybackupscript.php :
$command = "mysqldump -u myuser -pmypass mydb > mybkp/backup.sql ";
exec($command, $ret_arr, $ret_code);
If i use :
$command = "mysqldump > mybkp/backup.sql ";
it works successfully.
If i use :
$command = "mysqldump --all -databases > mybkp/backup.sql ";
error occurs saying : mysqldump: unknown option '-b'
Also, it creates the file backup.sql with the content :
Warning: The option '--all' is deprecated and will be removed in a future release. Please use --create-options instead.
The below command is syntactically incorrect.
$command = "mysqldump --all -databases > mybkp/backup.sql ";
It should be
$command = "mysqldump -u myuser -p mypass --all-databases > mybkp/backup.sql ";
EDIT:
Added the -u and -p flag. Ensure that you post your MySQL user name after -u and MySQL password after -p
Related
I try to save my database in PHP but not work its work only with Shell
With shell (work good)
mysqldump --user=root --password= --host=localhost site > C:\xamppp\htdocs\site\sql\tests.sql
With php (file is created but empty)
system('mysqldump --user=root --password= --host=localhost site > C:\xamppp\htdocs\site\sql\test.sql', $result);
for $result i have 1
I work with XAMP on Windows 7, i test exec and system but its same
Thanks you
$return_var = NULL;
$output = NULL;
$command = "mysqldump -u mysql-user -h your_host -pmysql-pass database_name > /directory_path/file.sql";
exec($command, $output, $return_var);
or you can refer to this answer mysqldump via PHP
Use 2>&1
<?php system("mysqldump --user=root --password= --host=localhost site > C:\xamppp\htdocs\site\sql\test.sql 2>&1", $result); ?>
I have run mysqldump on a test database using the bash command line and it works fine:
C:\\wamp\\bin\\mysql\\mysql5.6.12\\bin\\mysqldump --opt -u root -p membersite > c:\\wamp\\www\\php-backup\\membersitebackupfile1.sql
When I put the same line in a PHP file located in "c:\wamp\www\php-backup\dump.php" it produces a file with 0 bytes.
<?php
$command = "C:\\wamp\\bin\\mysql\\mysql5.6.12\\bin\\mysqldump --opt -u root -p membersite > c:\\wamp\\www\\php-backup\\membersitebackupfile1.sql";
exec($command);
?>
If you are using wamp then try:
$cmd = 'c: & cd "C:/wamp/bin/mysql/mysql5.6.17/bin" & mysqldump.exe --user=root --password=root --host=localhost databasename> "C:\Directory\SQL.sql"';
exec($cmd);
I created a script to copy a remote database using mysqldump inside a SSH connection. Then i ported to my PHP script so i can better manage several servers.
My problem is when the copy fails... I get no error code from the command.
This is the command:
ssh -p22 -i mykey.key -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null backup#hostname "mysqldump -hlocalhost -udbuser --databases db" > myfile.sql
It works =)
PHP code with simplified systax:
$comando = 'ssh -i mykey.key backup#hostname "mysqldump --databases db" > myfile.sql';
$ret_text = exec($comando, $output, $ret);
// Doesnt matter if command fails or sucess, result is?
//$ret = empty
//$output = empty
//$ret_text = empty
I need to know when the copy failed, does anyone know how to get a remote error code?
Thanks
neubert Solution Works! Thanks...
I ended with:
$comando = 'ssh -i mykey.key backup#hostname "mysqldump --databases db 2>&1\" 2>&1 > myfile.sql';
When I manually run the output from print it works fine. However the actual program produces the following error:
sh: /mysqldump: No such file or directory
<?php
$backupFile = "backup/wordpress" . date("Y-m-d-H-i-s") . '.gz';
$command = "mysqldump -hlocalhost -uusername -ppassword dbname | gzip > $backupFile";
print $command;
system($command);
?>
try adding the full path in front of mysqldump
You need to specify the full path to the mysqldump command line tool.
Entering...
which mysqldump
...from the shell will tell you the necessary path.
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.
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
I believe there are no spaces between -u and the actual username.
host: localhost user: peter password: pwd
would become:
-hlocalhost -upeter -ppwd
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");?>
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);
$command = 'C:\xampp\mysql\bin\mysqldump --opt --user=root --host=localhost --password="password" my_db'.' > '.$backupdate.$sql_file_name; exec($command);
I faced the same issue and got it fixed by quoting the password. For example --password="yourpassword".
I had empty files too using mysqldump.
I run WampServer PHP7 under Windows 10.
system('mysqldump .... ') ;
Doen't work.
I had to add the full path (or add an Environment variable) :
system('C:\wamp64\bin\mysql\mysql5.7.9\bin\mysqldump.exe ...') ;
You have to specify full path to mysqldump:
// Linux:
$command = '/usr/bin/mysqldump --opt -h localhost -u username -p \'password\' dbname > \'backup 2009-04-15 09-57-13.sql\'';
// Windows:
$command = 'c:\mysql\bin\mysqldump --opt -h localhost -u username -p \'password\' dbname > \'backup 2009-04-15 09-57-13.sql\'';