Ubuntu, Node.js, sqlcmd, компонент sqlcmd-runner: работа локально (Windows 10), перезапуск (pm2) app.js на сервере Ubuntu. Почему?

Я пишу серверную часть в 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 и т. д.) все шаги выполняются правильно, и задание завершается хорошо.

Я искал, и кажется, что для запуска мне пришлось его настроить, я выполнил все шаги по настройке на своем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+экземпляр, Ip+экземпляр+порт.

0 ответов

Другие вопросы по тегам