我正在编写一个bash脚本,该脚本执行一系列javascript文件,所有这些文件都是某种MySQL查询。问题是,当脚本的第一行执行时,它将停止该过程,并且不让其他javascript文件运行。
我已经尝试过&
,希望每行都希望它在后台运行并且不会停止执行流程。
#!/bin/bash
# a script to delete the database and create the tables
node createDatabase &
node createTables &
当createDatabase.js文件正确执行时,将有一个回调函数输出“数据库创建成功”,并且执行将在那里冻结。
答案 0 :(得分:1)
问题一定是来自nodejs,Nodejs不会在数据库创建时终止该过程,您必须在成功时调用process.exit(0)
或在错误时调用process.exit(1)
,否则它将等待信号终止或停止
这是一个简单的Node.js脚本,可创建数据库并根据来自数据库的响应退出。
var mysql = require('mysql');
var con = mysql.createConnection({
host: "my.test.com",
user: "root",
password: "password"
});
con.connect(function(err) {
if (err) throw err;
console.log("Connected!");
con.query("CREATE DATABASE mydbtest", function (err, result) {
if (err){
throw err;
process.exit(1);
}
else{
console.log("Database created");
process.exit(0);
}
});
});
现在,另一个脚本将在上述数据库上创建表。
var mysql = require('mysql');
var con = mysql.createConnection({
host: "mydb.test.com",
user: "root",
password: "password",
database: "mydbtest"
});
con.connect(function(err) {
if (err){
throw err;
process.exit(1);
}
else{
console.log("Connected!");
var sql = "CREATE TABLE customers (name VARCHAR(255), address VARCHAR(255))";
con.query(sql, function (err, result) {
if (err){
throw err;
process.exit(1)
}
else{
console.log("Table created");
process.exit(0)
}
});
}
});
此代码中的重要部分是process.exit(0)
或process.exit(1)
。
现在Bash脚本将是
#!/bin/bash
echo "creating db"
nodejs creatdb.js
echo "creating talbe"
nodejs createtable.js
您无需在后台发送它们,现在基于一个退出代码,您可以退出脚本或做出任何决定。