У меня есть приложение Symfony 3.4, подключенное к БД Oracle через кошелек, поэтому конфигурация имени пользователя и пароля БД находится вне приложения и моего контроля.
Чтобы позволить приложению работать с этимКонкретную конфигурацию я добавил в config.yml, параметр:
doctrine:
dbal:
connections:
default:
...
session_mode: !php/const OCI_CRED_EXT
...
Приложение работает без проблем.
У меня есть функция синхронизации, которая подключается к различным БД и синхронизирует некоторые данные. Функция синхронизации может быть запущена вручную в пользовательском интерфейсе приложения, и она работает.
Я написал консольную команду для запуска в задании cron, которое создает экземпляр того же набора классов, который использовался приложением вручную, но я получил ошибку вобъект, когда я выполняю команду через терминал.
Точная ошибка:
In AbstractOracleDriver.php line 57:
An exception occurred in driver: ORA-12154: TNS:could not resolve the connect identifier specified
In OCI8Exception.php line 16:
ORA-12154: TNS:could not resolve the connect identifier specified
Та же ошибка возникает при тестировании соединения БД с консолью:
#php .\bin\console doctrine:query:sql "select sysdate,current_date from dual"
Таким образом, кажется, что консольная команда каким-то образом игнорирует соединение оракула, которое я установил через кошелек, и ищет параметр servicename , который, очевидно, пуст, что приводит к ошибке TNS.
Есть ли у кого-нибудь какие-нибудь предложения по устранению проблемы?
Спасибо, Марко