mysql - 如何在 bash 脚本中运行所有命令?

标签 mysql node.js bash

我正在编写一个执行一系列 javascript 文件的 bash 脚本,所有这些文件都是某种 MySQL 查询。问题是,当脚本的第一行执行时,它会停止进程并且不会让其他 javascript 文件运行。

我已经尝试在每一行之后使用 & 希望它能在后台运行而不停止执行流程。

#!/bin/bash
# a script to delete the database and create the tables
node createDatabase &
node createTables &

当 createDatabase.js 文件正常执行时,有一个回调函数输出“数据库创建成功”,然后执行就停止了。

最佳答案

问题一定出在 nodejs,Nodejs 不会在创建数据库时终止进程,你必须在成功时调用 process.exit(0)process.exit(1) 错误否则它将等待信号终止或停止。

这是一个简单的 Nodejs 脚本,它根据数据库的响应创建数据库并退出。

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

您不需要在后台发送它们,现在您可以根据一个退出代码退出脚本或做出任何决定。

enter image description here

关于mysql - 如何在 bash 脚本中运行所有命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56988364/

相关文章:

linux - 如果第 6 个字段全部为 0,则移动文件

bash - 为什么我不能在函数内部使用 `declare -r` 来标记变量只读,而 `set -u` 正在使用中?

MySQL 分页。检查是否到达最后一条记录

php - Jquery 倒计时器与 php 未按预期执行

node.js - 将文件从 Base64 转换并作为二进制文件发送到某些外部服务

node.js - Node 导入在错误的位置查找 npm 模块的主文件

linux - 使用 bash shell 脚本挂载图像和编辑配置文件(在文件系统内)

MYSQL - 如果不存在且没有明显的主键/唯一键,则插入表中

php - 如何使用 HTML 表将数据库从一个页面获取值发布到另一个页面

javascript - MongoDB Mongoose 聚合/数学运算