我一直在运行
生成的空文件$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
所以看起来命令正在运行。
答案 0 :(得分:13)
删除-p
与密码之间的空格。如果它不起作用,请尝试从密码中删除引号
如果您使用短选项表单(-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\'';