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.inies un archivo de registro y configuración para controladores ODBC en un entorno, mientras que odbc.inies 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/.soen ambos archivos y los valores a veces difieren. ¿Esto tiene sentido? Si es así, ¿cuál prevalece?
En Driver = /path/to/file.sogeneral, 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.iniprevalecen sobre las configuraciones conflictivas en odbcinst.inicaso de que existan.
2) ¿ odbcinst.iniPara odbc.iniqué 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.inidentro odbcinst.ini?
No, odbcinst.inino es un "prototipo" de esta manera. odbcinst.inila configuración es relevante para el controlador , pero no para los DSN basados en ese controlador.
3) ¿Cuál es la diferencia entre Drivery Setupen 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.