Ubuntu、Node.js、sqlcmd、sqlcmd-runner 组件:在本地工作(Windows 10)、在 Ubuntu 服务器上重启(pm2)app.js,为什么?

Ubuntu、Node.js、sqlcmd、sqlcmd-runner 组件:在本地工作(Windows 10)、在 Ubuntu 服务器上重启(pm2)app.js,为什么?

我在 Windows 10、vs-code 中编写后端代码,并将代码上传到 Ubuntu 服务器、node.js、MsSQL express。就我而言,我需要为每个客户创建一个新数据库,然后动态创建一个数据库(这里没问题),之后我必须运行脚本副本来构建模式、类型、函数(这是第一个脚本),然后如果成功,我必须运行脚本来创建表(第二个脚本),如果成功,我将为所有存储过程运行第三个脚本文件,然后数据库就可以使用了。

要运行脚本文件,我依赖于sqlcmd-runner,这是我们使用的代码:

var sqlcmd = require('sqlcmd-runner');

exports.executeFile = (year, file_data, fileErr, cb) => {
    sqlcmd({
        username: 'sa',
        password: 'Roshan1402Roshan',
        server: 'localhost',
        database: 'ebrahimi_522_1402',
        port: 1433,
        trustServerCert: true,
        inputFiles: [`${file_data}`],
        outputFile: `${fileErr}`,
    })
    .catch((error) => { 
        cb(error.message)
    })
    .done((data) => { 
        cb(null, data)
    }); }

在我们的开发环境中(安装了 Windows 10、MSSQL、Nodejs 等)每个步骤都正常运行,并且工作完成得很好。

我搜索了一下,似乎要运行sqlcmd它,我必须设置它,我按照所有步骤sqlcmd在我的ubuntu服务器上进行设置。为了检查它是否sqlcmd正常工作,我尝试了此代码,它运行良好: 这将创建所有模式和其他模式:

sqlcmd -S localhost -d db_roshan_ir -U sa -P Roshan1402Roshan -C -i "/var/www/hesabroshan/app.hesabroshan.ir/Scripts/001/functions.sql"

这将创建所有表:

sqlcmd -S localhost -d db_roshan_ir -U sa -P Roshan1402Roshan -C -i "/var/www/hesabroshan/app.hesabroshan.ir/Scripts/001/tables.sql"

这将创建所有存储过程:

sqlcmd -S localhost -d db_roshan_ir -U sa -P Roshan1402Roshan -C -i "/var/www/hesabroshan/app.hesabroshan.ir/Scripts/001/sps.sql"

但是当我们使用 pm2 运行我们的项目并监控它时,会发生这个错误:

at ChildProcess._handle.onexit (node:internal/child_process:283:19)
at onErrorNT (node:internal/child_process:476:16)
at process.processTicksAndRejections (node:internal/process/task_queues:82:
errno: -2,
code: 'ENOENT',
syscall: 'spawn sqlcmd',
path: 'sqlcmd',
spawnargs: [
    '-S',
    'localhost', 
    '-d',
    'db_roshan_ir',
    '-U',
    'sa',
    '-P',
    'Roshan1402Roshan',
    '-C',
    '-i',
    '\\var\\www\\hesabroshan\\app.hesabroshan.ir\\Scripts\\001\\functions.sql',
    '-o',
    '\\var\\www\\hesabroshan\\app.hesabroshan.ir\\Scripts\\001\\err_func_522_14'
]

我认为服务器有问题,但我找不到。我尝试了很多方法,很多服务器地址,如 Ip、Ip+instance、Ip+instance+port。

相关内容