使用PHP运行`mysqldump`生成的空文件

时间:2009-04-15 00:07:38

标签: php mysql

我一直在运行

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

command($command);

任何人都知道这可能导致什么?我的密码中有奇怪的字符,但连接数据库时效果很好。

我已经运行了exec($command, $return)并输出了$ return数组,它正在查找命令。我还用mysqldump > file.sql运行它,文件包含

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

所以看起来命令正在运行。

7 个答案:

答案 0 :(得分:13)

删除-p与密码之间的空格。如果它不起作用,请尝试从密码中删除引号

来自MySQL documentation

  

如果您使用短选项表单(-p),则不能在选项和密码之间留出空格。

但是,可以使用-h-u选项

来留出空间

答案 1 :(得分:4)

我相信-u和实际用户名之间没有空格。

host: localhost user: peter password: pwd

会变成:

-hlocalhost -upeter -ppwd

答案 2 :(得分:1)

用简单的英语说明,确保使用以下选项(全部)。
--user = USERNAME
主机=本地主机
--password = ****

下一个非选项短语应该是您的数据库名称。如果该命令后跟另一个非选项短语,则将其视为表名。

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

答案 3 :(得分:1)

我就是这样做的 - 输出是最大的gzip压缩:

<?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");?>

答案 4 :(得分:0)

$command = 'C:\xampp\mysql\bin\mysqldump --opt --user=root --host=localhost --password="password" my_db'.' > '.$backupdate.$sql_file_name; exec($command);

我遇到了同样的问题,并通过引用密码来解决问题。例如--password =&#34; yourpassword&#34;。

答案 5 :(得分:0)

我使用mysqldump也有空文件。 我在Windows 10下运行WampServer PHP7。

system('mysqldump .... ') ;

Doen工作。 我必须添加完整路径(或添加一个环境变量):

system('C:\wamp64\bin\mysql\mysql5.7.9\bin\mysqldump.exe ...') ;

答案 6 :(得分:0)

您必须为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\'';