2016-05-27 2 views
1

In meinem gulpfile.js Ich habe diese spawn(), die eine mysqldump auslöst: Obwohl ich eine Fehlermeldung zu diesem letzten Teil erhaltenWie verwenden Sie eine Datei als Eingabe mit Knotens child_process.spawn von Node?

let mysqldump = spawn('mysqldump', [ 
    '-v', 
    '-u', 
    'my_db_name', 
    '--password=' + process.env.MY_PRODUCTION_PASSWORD, 
    '-h', 
    'my_domain.com', 
    'my_db_name', 
    '< ' + dump_filename 
], { 
    stdio: 'inherit' 
}); 

. Es sagt Couldn't find table: "< Development-dump.sql" was mich zu der Annahme führt, dass die letzte Zeile die Dump-Datei nicht als Eingabe verwendet. Wie bekomme ich spawn um eine Datei als Eingabe so zu verwenden?

+0

Möchten Sie die Datenbank aus der Dump-Datei wiederherstellen? – gnerkus

Antwort

0

Der Fehler tritt auf, weil der Befehl spawn die Eingabe nicht verarbeiten kann. Sie müssen die Speicher-Abbild-Datei in den input Strom des spawn Befehl schreiben:

// Define the spawned process without the input 
let mysqldump = spawn('mysqldump', [ 
    '-v', 
    '-u', 
    'my_db_name', 
    '--password=' + process.env.MY_PRODUCTION_PASSWORD, 
    '-h', 
    'my_domain.com', 
    'my_db_name' 
]); 

// Write the dump file to the input stream. 
mysqldump.stdin.write(//path to dump file); 
mysqldump.stdin.end(); 
+0

Es ist die gleiche Nachricht (mysqldump: Konnte Tabelle nicht finden: "> Development-dump.sql" '). '<' funktioniert normal, wenn ich eine 'child_process.exec 'mache, aber es funktioniert einfach nicht mit' child_process.spawn'. Ich versuche, die Datenbank von einem Speicherabbild auf meinem Entwicklungscomputer zu importieren. – IIllIIll

+0

Vielen Dank für die Klärung. Die Antwort ging davon aus, dass Sie die Datenbank in einer Datei speichern möchten. Ich werde es jetzt aktualisieren. – gnerkus

0

Es scheint, Sie < umleiten Standardeingabe, der folgende Code kann Werke verwenden möchten.

let mysqldump = spawn([ 
    'mysqldump', 
    '-v', 
    '-u', 
    'my_db_name', 
    '--password=' + process.env.MY_PRODUCTION_PASSWORD, 
    '-h', 
    'my_domain.com', 
    'my_db_name', 
    '< ' + dump_filename 
].join(' '), { 
    stdio: 'inherit', 
    shell: true 
});