我目前正在测试Delphi XE5以决定是否升级到它。我偶然发现了一个似乎是IDE配置问题的东西。Delphi XE 5试用 - ORA-12154问题
我们与Oracle合作(11g版本11.2.0.3.0 - 64位生产),我试图建立一个既与TFDConnection
一个TSQLConnection
和design time
连接到数据库只是为了测试目的。
由于某些原因,两个都失败,错误ORA-12154
,但只在设计时。如果我离开配置的连接并激活它们在runtime
它工作正常。例如,我可以从数据库中检索数据。
我使用tnsnames.ora
说明指定数据库。下面你可以看到Firedac连接定义(连接的dbExpress配置使用相同的数据库,用户等):
而且环境报告:
================================
Connection definition parameters
================================
Database=DBDES01_NEW
User_Name=SMILO_PRD
Password=*****
DriverID=Ora
================================
FireDAC info
================================
Tool = RAD Studio XE5
FireDAC = 9.0.1 (Build 63974)
Platform = Windows 32 bit
Defines = FireDAC_NOLOCALE_META;FireDAC_MONITOR
================================
Client info
================================
Loading driver Ora ...
Variable [Explicit Oracle Home]: [E:\oracle\product\10.2.0\client_1\]
Variable [Explicit OCI]: [E:\oracle\product\10.2.0\client_1\BIN\oci.dll]
Searching for Instant Client ...
Not found !
Searching for Oracle Home ...
Checking Oracle Home at key [\Software\Oracle] ...
Checking Oracle Home at key [\Software\Oracle\KEY_OraClient10g_home1] ...
Found [E:\oracle\product\10.2.0\client_1\bin\oci.dll], position [2147483647], in [reg: \Software\Oracle\KEY_OraClient10g_home1]
Home = E:\oracle\product\10.2.0\client_1
Version = 1002000100
OCI DLL name = E:\oracle\product\10.2.0\client_1\bin\oci.dll
TNSNAMES dir = E:\oracle\product\10.2.0\client_1\Network\Admin\tnsnames.ora
NLS_LANG = SPANISH_SPAIN.WE8MSWIN1252
================================
Session info
================================
Failed to connect to DBMS !
[FireDAC][Phys][Ora] ORA-12154: TNS:no se ha podido resolver el identificador de conexión especificado
使用tnsnames.ora
作品连接正确的使用从TOAD,旧的Delphi 2006安装,以及如果我在运行时激活连接。
该问题必须存在于我的IDE配置中。到目前为止,我找不到任何解决方案。关于我可以检查的任何想法?
如果这不是问题,则可能需要使用TNS_ADMIN环境变量来强制执行tnsnames.ora文件的位置。 – MarkF
我会试一试,但首先我必须亲自参与11g客户端。至于TNS_ADMIN环境变量,我怀疑这是问题所在。 IDE会看到'tnsnames.ora'文件,对于'FireDac'连接组件,我尝试添加'TFDPhysOracleDriverLink'并设置'TNSAdmin'属性。正如我在我的问题中所说的,这在运行时工作,而不是在设计时。无论如何,谢谢你的回答。 :-) –