2013-08-29 23 views
0

我們有一個連接到Oracle實例的小腳本。這個腳本在我們的resque worker之外運行時工作正常。它甚至可以在控制檯下運行。然而,當我們加載相同的腳本了在resque工人,它拋出爲什麼ruby-oci8會在resque worker中引發「無法解析連接標識符」,而不是控制檯?

TNS:could not resolve the connect identifier specified 

我們已經嘗試了很多東西,但迄今沒有奏效。

resque工人調用在根環境和控制檯中工作的同一個類。

回答

0

顯然,resque工作人員看不到$ TNS_ADMIN,所以我在application.rb中手動設置ENV ['TNS_ADMIN']]

0

嗯,我對Ruby一無所知,所以,我不完全瞭解你所採用的環境,但是我知道Oracle。

我可以告訴你,「TNS:無法解析指定的」連接標識符意味着Oracle不能解析連接標識符,又名連接字符串,因爲已經設置了環境

所以,。一些需要思考的東西:

在resque worker的執行環境中(抱歉,不知道這是什麼),你需要適當地設置ORACLE_HOME環境變量,Oracle會尋找tnsnames.ora,sqlnet.ora,ldap .ora等在$ ORACLE_HOME/network/admin中,除非設置了TNS_ADMIN。如果設置了TNS_ADMIN,它將覆蓋$ ORACLE_HOME/network/admin位置。

再一次,我不熟悉Ruby或「resque worker」是什麼,所以我只能說,比較兩種環境並查看它們以何種方式設置。

希望有所幫助。

如果有人同時知道Oracle和Ruby,他們可能會提供更具體的建議。

再次,希望有所幫助。

相關問題