web-dev-qa-db-ja.com

mysqlダンプを使用してmysqlデータベースをバックアップしているときに0KBのサイズのファイルを取得する

以下のコードを使用して、phpスクリプトを使用してデータベースをバックアップしていますが、サイズが0KBのファイルを取得しています。すべてのルーチンと関数を含むデータベース全体をどのようにバックアップできますか?

$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$dbname='mydatabase';
$toDay = date('d-m-Y');
    //exec("mysqldump --user=$dbuser --password='$dbpass' --Host=$dbhost --single-transaction $dbname > D:\Sql_Backups/".$toDay."_DB.sql");
    //exec('mysqldump --user=$dbuser --password=$dbpass --Host=$dbhost $dbname > D:\Sql_Backup/file.sql');
      exec ("mysqldump --routines --h $dbhost --u $dbuser --p $dbpass --single-transaction $dbname > D:\Sql_Backup/db3_backup.sql" >
3
Surendra

出力用に0KBファイルを取得する理由は、mysqldumpの構文エラーのためです。

あなたはこれを問題に持っています

exec ("mysqldump --routines --h $dbhost --u $dbuser --p $dbpass --single-transaction $dbname > D:\Sql_Backup/db3_backup.sql" > ...

-h-u-pから余分なダッシュを削除します

exec ("mysqldump --routines -h $dbhost -u $dbuser -p $dbpass --single-transaction $dbname > D:\Sql_Backup/db3_backup.sql" > ...

コメントアウトした最初の2つのコマンドには、オプションを入力するときに2つのダッシュがあります。構文のその部分は正しいです。

その他の確認事項

  • ファイルに同じスラッシュを使用していることを確認してください。また、次のどれがPHP で正しく動作するかを確認してください。
    • D:/Sql_Backup/db3_backup.sql
    • D:\Sql_Backup\db3_backup.sql
    • D:\\Sql_Backup\\db3_backup.sql
  • mysqldump.exeが%PATHにあることを確認してください。そうでない場合は、次のようにして絶対パスを使用する必要があります。

    exec( "D:\ Program Files\MySQL\MySQL 5.x Server\bin\mysqldump --routines --h $ dbhost --u $ dbuser --p $ dbpass --single-transaction $ dbname> D:\ Sql_Backup /db3_backup.sql "> ...

0
RolandoMySQLDBA

これをphpで書く方法はわかりませんが、mysqldumpコマンドを次のように書く必要があります。3つのコマンドを書く必要はありません。

mysqldump --user=root --password=root --Host=localhost --single-transaction --routines db_name > db_name.sql

[〜#〜]更新[〜#〜]

ここでやったのはphpスクリプトです

<?php
define("BACKUP_PATH", "/home/abdul/");

$server_name   = "localhost";
$username      = "root";
$password      = "root";
$database_name = "world_copy";
$date_string   = date("Ymd");

$cmd = "mysqldump --routines -h {$server_name} -u {$username} -p{$password} {$database_name} > " . BACKUP_PATH . "{$date_string}_{$database_name}.sql";

exec($cmd);
?>

20140225_world_copy.sql/home/abdul/という名前のバックアップファイルを生成します

参考までに This link。 を見てください。

1
Abdul Manaf

次の構文を使用する必要があります:

ルーチンも含めたフルダンプ
mysqldump --routines> outputfile.sql


ルーチンをダンプするには
mysqldump --routines --no-create-info --no-data --no-create-db --skip-opt> dumpfile.sql


-オプション--routinesはバージョン5.0.13から使用できます。 -バックアップユーザーには、ルーチンを読み取る権限が必要です。

0
Up_One