Si solo observa las implementaciones de Unix, obtendrá algunas ideas interesantes sobre cómo funciona ODBC. Ninguna de estas implementaciones es 100% comparable a la implementación de referencia en Windows, producida por el responsable de la especificación ODBC, es decir, Microsoft .
Hay dos administradores de controladores ODBC que se encuentran comúnmente en Unix. iODBC , cuya documentación relevante para esta pregunta está aquí , es mantenida y respaldada por mi empleador. UnixODBC es el otro, y se discutió en otras respuestas. Se supone que son API equivalentes entre sí y para la implementación de Windows, ya que ambas son implementaciones independientes de la plataforma del estándar.
En términos simples, odbcinst.ini
es un archivo de registro y configuración para controladores ODBC en un entorno, mientras que odbc.ini
es un archivo de registro y configuración para DSN de ODBC (nombres de origen de datos), generalmente basado en controladores registrados en el otro.
Tenías algunas preguntas específicas ...
1) Tengo una línea Driver = /path/to/file/.so
en ambos archivos y los valores a veces difieren. ¿Esto tiene sentido? Si es así, ¿cuál prevalece?
En Driver = /path/to/file.so
general, debería ser el mismo en ambos archivos cuando ambos se expresan como rutas. En odbc.ini
, esta entrada puede ser Driver = {name of driver}
donde el nombre está indexado odbcinst.ini
. En términos generales, las configuraciones odbc.ini
prevalecen sobre las configuraciones conflictivas en odbcinst.ini
caso de que existan.
2) ¿ odbcinst.ini
Para odbc.ini
qué sirve un "prototipo" similar a JavaScript ? En otras palabras, si estoy creando una serie de DSN con configuraciones comunes, ¿puedo promover configuraciones comunes desde odbc.ini
dentro odbcinst.ini
?
No, odbcinst.ini
no es un "prototipo" de esta manera. odbcinst.ini
la configuración es relevante para el controlador , pero no para los DSN basados en ese controlador.
3) ¿Cuál es la diferencia entre Driver
y Setup
en odbcinst.ini
? Parecen tener los mismos valores. ¿Estas configuraciones son específicas de la base de datos o son universales?
En odbcinst.ini
, se Driver =
refiere a la biblioteca de controladores y Setup =
a la biblioteca de configuración. Este último es completamente opcional, y cuando existe, puede pero no necesita ser usado durante una conexión de datos; está destinado principalmente para que lo use un administrador de ODBC cuando "configura" tales conexiones, para guardarlas como DSN. A veces, estas bibliotecas se encuentran en el mismo archivo físico, pero no es necesario que estén, y, por ejemplo, normalmente no se encuentran en el entorno OS X.