Работа с Nodejs + MSSQL в Ubuntu
У меня есть приложение nodejs, подключенное к серверу MSSQL, отлично работало на моем ноутбуке с Windows, спой mssql@npm
Это же приложение не может видеть базу данных на моем ноутбуке Ubuntu.
Я определил подключение mssql в Ubuntu, как показано ниже, я что-то упустил?
- Обновил мой ~/.profile, так как:
~$ export ODBCINI=/etc/odbc.ini ~$ export ODBCSYSINI=/etc ~$ export FREETDSCONF=/etc/freetds/freetds.conf
Выключил ноутбук, чтобы активировать вышеуказанное, и профиль обновился.
Установлены необходимые пакеты подключения.
~$ sudo apt-get install unixodbc unixodbc-dev freetds-dev sqsh tdsodbc -y
- Настроил FreeTDS
~$ sudo gedit /etc/freetds/freetds.conf [ACUMENSERVER] host = 192.168.0.10 port = 1433 tds version = 7.0
- Протестировано соединение FreeTDS с sqsh, и оно отлично работает:
~$ sqsh -S ACUMENSERVER -U mssql-username -P mssql-password
- Настроил ODBC - odbcinst.ini:
~$ sudo gedit /etc/odbcinst.ini [FreeTDS] Description = TDS driver (Sybase/MS SQL) Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so CPTimeout = CPReuse = FileUsage = 1
- Настроил ODBC - odbc.ini:
~$ sudo gedit /etc/odbc.ini [ACUMENSERVER] Driver = FreeTDS Description = ODBC connection via FreeTDS Trace = No Servername = ACUMENSERVER Database = myDataBase
- Протестировано ODBC-соединение с isql, и оно работает нормально:
isql -v ACUMENSERVER mssql-username mssql-passward
Когда я запускаю свое приложение nodejs (которое отлично работает в Windows), я обнаружил в Ubuntu ошибку ниже, учитывая, что все вышеперечисленное сделано, и проверил:
{ name: 'ConnectionError',
message: 'Failed to connect to ACUMENSERVER:1433 - getaddrinfo ENOTFOUND',
code: 'ESOCKET' }
Что может быть не так / отсутствует здесь, я открыт, чтобы использовать другой пакет npm для подключения mssql.
1 ответ
Я обнаружил, что это может работать, если используется IP-адрес сервера, имя сервера не работает!
ниже того, что работало со мной:
var sql = require('mssql');
var config = {
user: 'sa',
password: 'sql@123',
// server: 'myServername', --> Not Working
// server: 'ACUMENSERVER', --> Not Working
server: '6192.168.0.10', // WORKED
database: 'myDB'
}
sql.connect(config).then(function() {
// Query
new sql.Request().query('select top 1 itemcode from OITM').then(function(recordset) {
console.dir(recordset);
}).catch(function(err) {console.log(err); /* ... query error checks ... */ });
// Stored Procedure
new sql.Request()
.input('input_parameter', sql.Int, value)
.output('output_parameter', sql.VarChar(50))
.execute('procedure_name').then(function(recordset) {
console.dir(recordset);
}).catch(function(err) {console.log(err); /* ... execute error checks ... */ });
}).catch(function(err) {console.log(err); /* ... connect error checks ... */ });