斯芬克斯+;Oracle:找不到数据源名称错误

斯芬克斯+;Oracle:找不到数据源名称错误,oracle,sphinx,unixodbc,Oracle,Sphinx,Unixodbc,我想连接到远程oracle数据库服务器,并使用sphinx搜索引擎从那里索引一些数据。我的操作系统是Ubuntu16.04,我已经在上面安装了sphinx,并用本地mysql数据库对其进行了测试,一切正常(所有数据都被索引了,我可以搜索,结果都是正确的)。我还安装了unixODBC,并使用isql工具对其进行了测试,以远程访问oracle数据库服务器,一切正常,但当我想使用sphinx的indexer命令对数据进行索引时,会出现以下错误: sql_connect: [unixODBC][Driv

我想连接到远程oracle数据库服务器,并使用sphinx搜索引擎从那里索引一些数据。我的操作系统是Ubuntu16.04,我已经在上面安装了sphinx,并用本地mysql数据库对其进行了测试,一切正常(所有数据都被索引了,我可以搜索,结果都是正确的)。我还安装了unixODBC,并使用isql工具对其进行了测试,以远程访问oracle数据库服务器,一切正常,但当我想使用sphinx的indexer命令对数据进行索引时,会出现以下错误:

sql_connect: [unixODBC][Driver Manager]Data source name not found, and no default driver specified
下面是我的sphinx.conf文件的源代码块:

source src2
{
  type  = odbc
  sql_host = hostName
  sql_user = user
  sql_pass = pass
  sql_db  = dbname
  sql_port = 1521
  odbc_dsn    = DSN = mydsn; Driver={Oracle};Dbq=hostname:1521/dbname;Uid=user;Pwd=pass
  sql_query     = \
  SELECT tableId, Name \
  FROM sampleTable

}
和odbc.ini文件:

[mydsn]
Application Attributes = T
Attributes = W
BatchAutocommitMode = IfAllSuccessful
BindAsFLOAT = F
CloseCursor = F
DisableDPM = F
DisableMTS = T
Driver = Oracle
DSN = mydsn
EXECSchemaOpt =
EXECSyntax = T
Failover = T
FailoverDelay = 10
FailoverRetryCount = 10
FetchBufferSize = 64000
ForceWCHAR = F
Lobs = T
Longs = T
MaxLargeData = 0
MetadataIdDefault = F
QueryTimeout = T
ResultSets = T
ServerName = MYDATABASE
SQLGetData extensions = F
Translation DLL =
Translation Option = 0
DisableRULEHint = T
UserID = user
Password = pass
StatementCache=F
CacheBufferSize=20
UseOCIDescribeAny=F
SQLTranslateErrors=F
MaxTokenSize=8192
AggregateSQLType=FLOAT
和odbcinst.ini文件:

[Oracle]
Description= ODBC for Oracle
Driver  = /opt/oracle/instantclient_12_2/libsqora.so.12.1
Setup  =
FileUsage = 1
CPTimeout =
CPReuse = /usr/local/etc/odbcinst.ini
试一试

i、 e.w/o spaces around=在DSN之后,由于您在ini文件中指定了所有其他内容,因此仅DNS就足够了。您还只需要从其余sql查询中查询sql。像这样:

source src2
{
  type = odbc
  odbc_dsn    = DSN=mydsn;
  sql_query     = \
  SELECT tableId, Name \
  FROM sampleTable
}

没有任何更改,但当我直接寻址驱动程序属性时,就像这个driver={/path/to/the/driver/libsqora.so.12.1},发生了这个错误:错误更改为:[unixODBC][Oracle][ODBC Ora]Ora-01017:无效的用户名/密码;登录被拒绝。考虑到这些情况,我认为sphinx无法访问ini文件,如果不是真的请纠正我,如果是真的,我如何修复它?@DAVID_ROA Try“Driver={/path/to/the/Driver/libsqora.so.12.1};Dbq=hostname:1521/dbname;Uid=user;Pwd=password”然后。这两种方法对我都有效(无论是DSN=mydns还是如上所述),我做到了,现在也可以了,但为什么还要再做一次(设置用户、通行证和驱动程序地址)当我在ini文件中进行设置时?@DAVID_ROA当您在=”周围指定仅DSN且没有空格时,会出现什么错误?与我第一次说的相同错误:未找到sql_connect:[unixODBC][Driver Manager]数据源名称,并且未指定默认驱动程序
source src2
{
  type = odbc
  odbc_dsn    = DSN=mydsn;
  sql_query     = \
  SELECT tableId, Name \
  FROM sampleTable
}