Sphinx + Oracle:找不到数据源名称错误
Sphinx + Oracle : Data source name not found error
我想连接到远程 oracle 数据库服务器并使用 sphinx 搜索引擎从那里索引一些数据。我的 OS 是 ubuntu 16.04,我在上面安装了 sphinx 并使用本地 mysql 数据库对其进行了测试,一切正常(所有数据都已索引我可以搜索并且结果是正确的)。我还安装了 unixODBC 并使用 isql 工具对其进行了测试以远程访问 oracle 数据库服务器并且 一切正常 ,但是当我想使用 indexer[= 索引数据时25=] sphinx 命令发生此错误:
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
尝试
odbc_dsn = DSN=mydsn;
即w/o 在 DSN 之后 = 周围的空格,并且由于您在 ini 文件中指定了所有其他内容,因此只需 DNS 就足够了。您还只需要 sql_query 其余的 sql_*。像这样:
source src2
{
type = odbc
odbc_dsn = DSN=mydsn;
sql_query = \
SELECT tableId, Name \
FROM sampleTable
}
我想连接到远程 oracle 数据库服务器并使用 sphinx 搜索引擎从那里索引一些数据。我的 OS 是 ubuntu 16.04,我在上面安装了 sphinx 并使用本地 mysql 数据库对其进行了测试,一切正常(所有数据都已索引我可以搜索并且结果是正确的)。我还安装了 unixODBC 并使用 isql 工具对其进行了测试以远程访问 oracle 数据库服务器并且 一切正常 ,但是当我想使用 indexer[= 索引数据时25=] sphinx 命令发生此错误:
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
尝试
odbc_dsn = DSN=mydsn;
即w/o 在 DSN 之后 = 周围的空格,并且由于您在 ini 文件中指定了所有其他内容,因此只需 DNS 就足够了。您还只需要 sql_query 其余的 sql_*。像这样:
source src2
{
type = odbc
odbc_dsn = DSN=mydsn;
sql_query = \
SELECT tableId, Name \
FROM sampleTable
}