Database driver specification (driver)
In database connection parameters, the driver
parameter identifies the type of
database driver to be used.
Pay attention to the binary architecture of the database client software: Genero runtime system and database client binaries must match. For example, a 32 bit Oracle® client can not be used with a Genero 64 bit runtime system.
We distinguish two types of database driver names:
- Generic driver names ("
dbmora
", "dbmsnc
"), and aliases ("oracle
", "sqlserver
") - Version-stamped driver names ("
dbmora_18
", "dbmsnc_17
", "dbmmys_8_0
")
A driver name "dbmxxx
" identifies a generic driver name for
the database server identified by the code xxx
.
For example, in FGLPROFILE, to define the database driver for the Oracle OCI client (code "ora
"), use the name
"dbmora
":
dbi.database.stores.driver = "dbmora"
For convenience, it is also possible to specify a long name (alias) such as
"oracle
" or "sqlserver
", as defined in the database driver table
below.
The generic driver names (like dbmora
) require the latest database client
software available on the platform. This can change from one Genero BDL release to another, when
supporting a new database client version. Use the version-stamped driver name (like
dbmora_18
), to point to a specific database client version, for example when the
most recent database client software is not available on the platform.
$ ldd $FGLDIR/dbdrivers/dbmmys.so
...
libmysqlclient.so.21 => ...
...
Drivers with generic names are compatible with the latest database client version available on
the platform. Depending on the platform, the same generic driver name can refer to different
database client software versions. For example, on an old platform where only MySQL 5.7 client is
available, dbmmys
will identify the dbmmys_5_7
driver, depending
on libmysqlclient.so.20. On a more recent platform where MySQL 8.0 is
available, dbmmys
will identify the dbmmys_8_0
driver, depending
on libmysqlclient.so.21.
To limit the number of drivers, if the database client software is ABI compatible across several
versions, the ODI drivers are build with the oldest database client version that is compatible with
the latest available database client versions. For example, the dbmpgs_9
driver is
linked to libpq.so.5, which is supported by various PostgreSQL client versions
9 to 12 (and more, if the ABI compatibility does not change).
A given driver (combined with the corresponding database client software library) can connect to a database server of an older version, if the database vendor client/server protocol supports the combination. For example, you can use a PostgreSQL client version 12 to connect to a PostgreSQL 11 server. The ODI driver will then adapt SQL translations and emulations to the target database server version.
A default driver can be specified with the dbi.default.driver
FGLPROFILE entry.
This driver will be used for all database connections that do not specify the driver explicitly:
dbi.default.driver = "dbmora"
If this entry is not defined, and if no driver parameter is specified for the data source, the
driver name defaults to dbmdefault
. This default driver is a copy of the database
driver that was chosen during installation.
Versionned name / Generic name / Alias | Code | Database client software version | UNIX™ shared objects | Microsoft™ Windows® DLLs | macOS® dynamic libraries |
---|---|---|---|---|---|
dbmdb2_10 / dbmdb2 /
db2 |
db2 |
IBM® DB2® LUW Client 11.x | libdb2.so.1 | db2cli.dll | N/A |
dbmesm_1 / dbmesm /
easysoft_sqlserver |
esm |
Easysoft ODBC 2.x + for SQL Server | libessqlsrv.so | N/A | N/A |
dbmhdb_2 / dbmhdb /
sap_hana |
hdb |
SAP HANA® ODBC 2.x | libodbcHDB.so | libodbcHDB.dll | N/A |
dbmifx_9 / dbmifx /
informix |
ifx |
IBM Informix® CSDK 4.10 and higher | libifsql.so, libifasf.so, libifgen.so, libifos.so, libifgls.so, libifglx.so | isqlt09a.dll | libifsql.dylib, libifasf.dylib, libifgen.dylib, libifos.dylib, libifgls.dylib, libifglx.dylib |
dbmmdb_10_2 / dbmmdb /
mariadb |
mdb |
MariaDB Client 10.2.x and higher | libmariadb.so.3 | libmariadb.dll | libmariadb.3.dylib |
dbmmys_5_7 |
mys |
Oracle MySQL Client 5.7.x | libmysqlclient.so.20 | libmysql.dll | libmysqlclient.20.dylib |
dbmmys_8_0 |
mys |
Oracle MySQL Client 8.0.x LTS | libmysqlclient.so.21 | libmysql.dll | libmysqlclient.21.dylib |
dbmmys_8_2 / dbmmys /
mysql |
mys |
Oracle MySQL Client 8.2.x IR (see note) | libmysqlclient.so.22 | libmysql.dll | libmysqlclient.22.dylib |
dbmntz_6 / dbmntz /
netezza |
ntz |
IBM Netezza Performance Server® (7.x, 11.x) | libnzodbc.so | odbc32.dll / NSQLODBC.DLL | N/A |
dbmora_18 / dbmora /
oracle |
ora |
OCI Client 18, 19, 21 | libclntsh.so.18.1 | oci.dll | libclntsh.dylib.18.1 |
dbmpgs_9 / dbmpgs /
postgresql |
pgs |
PostgreSQL Client 11, 12, 13, 14, 15 and 16 | libpq.so.5 | libpq.dll | libpq.5.dylib |
dbmsnc_17 |
snc |
Microsoft ODBC 17 for SQL Server | libmsodbcsql-17.so | odbc32.dll / MSODBCSQL17.DLL | N/A |
dbmsnc_18 / dbmsnc /
sqlserver |
snc |
Microsoft ODBC 18 for SQL Server | libmsodbcsql-18.so | odbc32.dll / MSODBCSQL18.DLL | N/A |
dbmftm_0 / dbmftm /
freetds_sqlserver |
ftm |
FreeTDS ODBC version 1.00+ | libtdsodbc.so.0 | N/A | N/A |
dbmsqt_3 / dbmsqt /
sqlite |
sqt |
SQLite 3.x | libsqlite3.so.0 | N/A (statically linked) | libsqlite3.dylib |
The MySQL 8.2 version is an Innovation Release (IR) compared to 8.0 Long-Term Support release
(LTS). In a next Genero BDL release, the dbmmys_8_2
driver may be replaced by
another MySQL IR 8.x version, and when the next MySQL LTS version is released, the latest driver
may be replaced by the driver corresponding to the client library version of the most recent MySQL
LTS release.