代码之家  ›  专栏  ›  技术社区  ›  alex

使用php运行'mysqldump'生成的空文件

  •  10
  • alex  · 技术社区  · 16 年前

    我总是从运行中获取空文件

    $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
    

    所以看起来命令是有效的。

    6 回复  |  直到 8 年前
        1
  •  13
  •   Aziz    16 年前

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

    MySQL documentation :

    如果使用短期期权表(-p),则 不能 在选项和密码之间留一个空格。

    不过,与 -h -u 选项

        2
  •  4
  •   Peter Perháč    16 年前

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

    host: localhost user: peter password: pwd
    

    将成为:

    -hlocalhost -upeter -ppwd
    
        3
  •  1
  •   Rubber Duck    15 年前

    用简单的英语来说, 确保 使用以下选项(全部)。
    --用户=用户名
    --主机=本地主机
    --密码= ***

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

    $command="mysqldump --xml --host=localhost --user=USERNAME --password=***** DBNAME > XMLTABLE.xml";
    system($command);
    
        4
  •  1
  •   Thomas    15 年前

    我就是这样做的-输出具有最大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");?>
    
        5
  •  0
  •   Eric Asomah    9 年前
    $command = 'C:\xampp\mysql\bin\mysqldump --opt --user=root --host=localhost --password="password" my_db'.' > '.$backupdate.$sql_file_name; exec($command);
    

    我也遇到了同样的问题,并通过引用密码解决了这个问题。例如--password=“yourpassword”。

        6
  •  0
  •   zeuf    8 年前

    我也有空文件使用mysqldump。 我在Windows10下运行wampserver php7。

    system('mysqldump .... ') ;
    

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

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