node-oracledb TNS: слушатель в настоящее время не знает об услуге, запрошенной в дескрипторе соединения - PullRequest
0 голосов
/ 11 марта 2020

Я недавно перешел с прежних баз данных, где использовал Oracle 11g, в облако, где мне нужно было подключиться к Oracle 12c. Мое nodejs приложение работало нормально на прем, но в облаке выкинуло ошибку ниже

error: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

Ниже приведен фрагмент кода, который использовало мое приложение.

oracledb.createPool({
    user: config.DB_USER,
    password: config.DB_PASS,
    connectString: config.DB_HOST + ':' +
    config.DB_PORT + '/' +
    config.DB_NAME,
    poolMin: 20,
    poolIncrement: 0,    
    poolMax: 20
}

После поиска вокруг и попытка нескольких опций, включая замену : на /, казалось, ничего не работает. Мне наконец удалось получить рабочее решение, и я ответил на этот вопрос ниже. Надеюсь, это кому-нибудь поможет

1 Ответ

0 голосов
/ 11 марта 2020

Решением этой проблемы было изменение строки подключения, как показано во фрагменте кода ниже

oracledb.createPool({
    user: config.DB_USER,
    password: config.DB_PASS,
    connectString:"(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host="+config.DB_HOST+")(Port="+config.DB_PORT+"))(CONNECT_DATA=(SID="+config.DB_NAME+")))",
    poolMin: 20,
    poolIncrement: 0,    
    poolMax: 20
},
...