Skip to Content

Recommended ODBC Drivers for 17.0.0 MobiLink

Recommended ODBC Drivers for 17.0.0 MobiLink

The MobiLink server connects to several types of consolidated database using the ODBC 3.5 standard. For some supported consolidated database types you should use the SAP SQL Anywhere ODBC driver for that type of database. For others we recommend drivers supplied by the database vendors. The SAP SQL Anywhere ODBC drivers and the MobiLink server are included in the SAP SQL Anywhere 17 product. When SAP does not provide an ODBC driver, then you must use one provided by another vendor. ODBC drivers from other vendors may not support some optional ODBC functionality that the MobiLink server requires.

Recommended Drivers

As a result of our testing, we recommend the following ODBC drivers for use with version 17.0.0 of the MobiLink server.

If you are having problems with an older version of MobiLink, you should consider upgrading to a newer version. Older versions may no longer be actively supported. For more information, see SAP SQL Anywhere Supported Platforms and Engineering Support Status.

The following sections list the recommended ODBC driver for different types of consolidated database. In some cases, alternative drivers are also listed. Click on one of the consolidated DBMS types below to see recommended driver information for using MobiLink with that type of DBMS:

For detailed supported consolidated databases,  please refer to MobiLink Consolidated Database Support .

SAP SQL Anywhere (SQLA) 16.0 and 17.0

SAP SQL Anywhere (SQLA) 16.0

Driver

SAP SQL Anywhere 16.0

Version

16.0.x

Status

Recommended for use with MobiLink

Client s/w

None

OS

Windows

7, 8, Server 2003, Server 2008, Server 2008 R2, Server 2012, and Server 2012 R2

Linux

Redhat Enterprise Linux 5, 6, and 7
SuSE Enterprise Linux 12
Supported where the kernel/glibc versions are within the ranges specified on the SAP SQL Anywhere Supported Linux Platforms.

Solaris

10, 11

AIX

6.1, 7.1

MAC OS X

10.8 (Intel)

Pros

All tests passed

Cons

None

Notes

None

Permission requirements

The MONITOR system privilege is required in order to invoke the locking/blocking detection logic.

SAP SQL Anywhere (SQLA) 17.0.0

Driver

SAP SQL Anywhere 17.0.0

Version

17.0.0

Status

Recommended for use with MobiLink

Client s/w

None

OS

Windows

7, 8, Server 2003, Server 2008, Server 2008 R2, Server 2012, and Server 2012 R2

Linux

Redhat Enterprise Linux 5, 6, and 7
SuSE Enterprise Linux 12
Supported where the kernel/glibc versions are within the ranges specified on the SQL Anywhere Supported Linux Platforms.

Solaris

10, 11

AIX

6.1, 7.1

MAC OS X

10.8 (Intel)

Pros

All tests passed

Cons

None

Notes

None

Permission requirements

    The MONITOR system privilege is required in order to invoke the locking/blocking detection logic.

SAP Adaptive Server Enterprise 15.7 and 16.0

SAP Adaptive Server Enterprise 15.7

Driver

SAP Adaptive Server Enterprise ODBC driver

Version

16.00.00.05 on Windows (x86 and x64) and Linux (x86 and x64)  - This driver is available from the SAP Adaptive Server Enterprise SDK 16.0 PL05.

Status

Recommended for use with MobiLink

Client s/w

None

OS

Windows

7 and Server 2008 R2

Linux

Redhat Enterprise Linux 5, 6, and 7
SuSE Enterprise 12

Pros

All tests passed

Cons

On Linux, if UseCursor=1, the synchronization tables can't be dropped after synchronization.     

Notes

  1. Always set UseCursor to 0 (zero) on Linux.
  2. Always set ServerInitiatedTransactions to 0 (zero).
  3. Set AnsiNull to 1, if the "where clauses" in any of the upload and download scripts contain the clause "column_name = NULL".
  4. On Linux, you need to set SYBASE environment variable to the directory where you install the ASE SDK 16.0 PL05, otherwise, you will get the error, "Could not load code page for requested charset".
  5. On Linux, SAP provides two 64-bit ASE ODBC drivers, libsybdrvodb-sqllen4.so and libsybdrvodb-sqllen8.so.  The former defines SQLLEN (an ODBC data type) as a 32-bit integer and the latter defines SQLLEN as a 64-bit integer.  The 64-bit MobiLink server on Linux assumes SQLLEN is a 64-bit integer.  Therefore, the ASE ODBC driver, libsybdrvodb-sqllen8.so should always be used, when a DSN is configurated for the 64-bit MobiLink server to use.
  6. By default, the ASE ODBC driver from SDK 16.0 PL05 will trim all blank padding in upload and download strings. If you do not want the driver to trim blank padding, add the following connection parameter to the MobiLink server connection string:
      stripblanks=0
    The connection string of the MobiLink server will look like the following:
      -c "dsn=...;...;stripblanks=0"

Permission requirements

  1. Select permission on MASTER..SYSTRANSACTIONS and MASTER..SYSPROCESSES.
  2. The user ID also needs to have the dtm_tm_role role, if the MobiLink server command line option -cs is used.

SAP Adaptive Server Enterprise 16.0

Driver

SAP Adaptive Server Enterprise ODBC driver

Version

16.00.00.05 on Windows (x86 and x64) and Linux (x86 and x64)  - This driver is available from the SAP Adaptive Server Enterprise SDK 16.0 PL05.

Status

Recommended for use with MobiLink

Client s/w

None

OS

Windows

7 and Server 2008 R2

Linux

Redhat Enterprise Linux 5, 6, and 7
SuSE Enterprise 12

Pros

All tests passed

Cons

On Linux, if UseCursor=1, the synchronization tables can't be dropped after synchronization.     

Notes

  1. Always set UseCursor to 0 (zero) on Linux.
  2. Always set ServerInitiatedTransactions to 0 (zero).
  3. Set AnsiNull to 1, if the "where clauses" in any of the upload and download scripts contain the clause "column_name = NULL".
  4. On Linux, you need to set SYBASE environment variable to the directory where you install the ASE SDK 16.0 PL05, otherwise, you will get the error, "Could not load code page for requested charset".
  5. On Linux, SAP provides two 64-bit ASE ODBC drivers, libsybdrvodb-sqllen4.so and libsybdrvodb-sqllen8.so.  The former defines SQLLEN (an ODBC data type) as a 32-bit integer and the latter defines SQLLEN as a 64-bit integer.  The 64-bit MobiLink server on Linux assumes SQLLEN is a 64-bit integer.  Therefore, the ASE ODBC driver, libsybdrvodb-sqllen8.so should always be used, when a DSN is configurated for the 64-bit MobiLink server to use.
  6. By default, the ASE ODBC driver from SDK 16.0 PL05 will trim all blank padding in upload and download strings. If you do not want the driver to trim blank padding, add the following connection parameter to the MobiLink server connection string:
      stripblanks=0
    The connection string of the MobiLink server will look like the following:
      -c "dsn=...;...;stripblanks=0"
  7. When the "enable functionality group" configuration parameter is enabled on the ASE 15.7 server, the MobiLink server will use the "select ... for update" feature to lock remote IDs to prevent redundant syncs for the same remote ID simultaneously.  If for some reason, this feature needs to be disabled, all the MobiLink servers currently connected to the ASE server need to be restarted.  Otherwise, the MobiLink servers will fail all the synchronization requests.

Permission requirements

  1. Select permission on MASTER..SYSTRANSACTIONS and MASTER..SYSPROCESSES.
  2. The user ID also needs to have the dtm_tm_role role, if the MobiLink server command line option -cs is used.

SAP IQ 15.4 and 16.0

SAP IQ 15.4

Driver

SAP IQ ODBC driver

Version

12.00.01.3019 on Windows (x64) and 12.00.01.3761 on Linux (x64) - Both drivers can be installed from the SAP IQ 15.4 ESD #2.

Status

Recommended for use with MobiLink

Client s/w

None

OS

Windows

7, Server 2003, Server 2008, and Server 2008 R2

Linux

Redhat Enterprise Linux 5, 6, and 7
SuSE Enterprise 12

Pros

All tests passed

Cons

None

Notes

  1. The SAP IQ 15.4 server binaries must be from SAP IQ 15.4 ESD #1 or up;
  2. Only a 64-bit MobiLink server is supported on Windows and Linux for consolidated databases running on a SAP IQ 15.4 server;
  3. If an upload contains any data that modifies any sync tables that were defined on the IQ store and if the MobiLink server is running with more than one concurrent database worker threads or the MobiLink server is currently running in a server farm, all the uploads must be serialized, because SAP IQ 15 server allows only a single connection to modify a given table on the IQ store at any given time.  This requirement can be achieved, if the begin_upload connection script is written to include or to use the following SQL statement:
        LOCK TABLE table_name IN WRITE MODE WAIT time_string
    where table_name is the name of a table that is defined on the IQ store and the time_string gives the maximum time period to lock the table.  The table can be as simple as the one defined as:
        CREATE TABLE coordinate_upload ( c1 INTEGER )
    It is not required to have any data in this table.
    If any of the other MobiLink server transactions is required to modify any IQ tables, all of these transaction must be serialized.  The same logic mentioned above can be used.
    This technique is considered more efficient than having the MobiLink server retry on each transaction automatically and users will get better performance.

Permission requirements

    Permission to EXECUTE on SP_IQTRANSACTION - required by MobiLink server to use snapshot isolation for download.

SAP IQ 16.0

Driver

SAP IQ ODBC driver

Version

16.00.00.428 on Windows (x64) and 16.00.0000 on Linux (x64) - Both drivers can be installed from the SAP IQ 16.0 GA release.

Status

Recommended for use with MobiLink

Client s/w

None

OS

Windows

7, Server 2003, Server 2008, and Server 2008 R2

Linux

Redhat Enterprise Linux 5, 6, and 7
SuSE Enterprise 12

Pros

All tests passed

Cons

None

Notes

  1. Only a 64-bit MobiLink server is supported on Windows and Linux for consolidated databases running on a SAP IQ 16.0 server;
  2. Using the Row Level Versioning (RLV) feature introduced in SAP IQ 16.0 will greatly increase the throughput for upload and dramatically improves the upload performance, if there are no BLOB columns and foreign keys used in any of the upload tables, because the RLV enabled tables created on the RLV store would be allowed to be accessed concurrently by multiple connections.  However, the RLV feature is limited to tables without BLOB and foreign key columns. If any of the sync tables that will be included in the upload streams contains BLOB and/or foreign key columns, the upload phase must be serialized, because SAP IQ 16.0 server does not allow more than one connection to modify a given table concurrently. This requirement can be achieved, if the begin_upload connection script is written to include or to use the following SQL statement:
        LOCK TABLE table_name IN WRITE MODE WAIT time_string
    where table_name is the name of a table that is defined on the IQ store and the time_string gives the maximum time period to lock the table.  The table can be as simple as the one defined as:
        CREATE TABLE coordinate_upload ( c1 INTEGER )
    It is not required to have any data in this table.
    If any of the other MobiLink server transactions is required to modify any IQ tables, all of these transaction must be serialized.  The same logic mentioned above can be used.
    This technique is considered more efficient than having the MobiLink server retry on each transaction automatically and users will get better performance.

Permission requirements

  1. The EXECUTE permission on SP_IQTRANSACTION is required by MobiLink server to use snapshot isolation for download.
  2. The MONITOR system privilege is required in order to invoke the locking/blocking detection logic.

Oracle 11g and 12.1

Oracle 11g

Driver

SQL Anywhere 17 - Oracle ODBC Driver

Version

17.00.00

Status

Recommended for use with MobiLink

Client s/w

Oracle 11g client

OS

Windows

7, Server 2008, Server 2008 R2, and Server 2012

Linux

Redhat Enterprise Linux 5, 6, and 7

Solaris

10, 11

AIX

6.1, 7.1

Pros

All tests passed

Cons

None

Notes

  1. Before using this driver, you must install Oracle 11g client. To load this driver, you must set Oracle client libraries in your LD_LIBRARY_PATH (Linux, Solaris) or LIBPATH (AIX).
  2. TNS server name on Windows DSN setting and ServerName in Linux and Unix .odbc.ini are Oracle TNS service name defined in $ORACLE_HOME/network/admin/tnsnames.ora.
  3. The default setting of "Procedure return results or uses VARRAY parameters" on Windows or ProcResults on Linux and Unix is 'No'.
  4. If you are using a stored procedure that returns a REF CURSOR, the REF CURSOR parameter (either OUT or IN OUT) must be defined as the last parameter in the parameter list of the stored procedure.

Permission requirements

  1. Permission to EXECUTE on SYS.DBMS_UTILITY - required by MobiLink to determine if the database is running on an Oracle RAC.
  2. Permission to SELECT from SYS.GV_$TRANSACTION - required by MobiLink server to do TIMESTAMP based downloads.
  3. Permission to SELECT from SYS.V_$SESSION - required by MobiLink server to determine the SID and SERIAL# values of the current session.
  4. Permission to SELECT from DBA_OBJECTS, SYS.GV_$LOCK and SYS.GV_$SESSION - required by MobiLink server locking/blocking detection logic.

Oracle 12.1

Driver

SQL Anywhere 17 - Oracle ODBC Driver

Version

17.00.00

Status

Recommended for use with MobiLink

Client s/w

Oracle 12.1 client, version 12.1.0.1.0

Warning: There is a behavior change in the Oracle OCI library, versions 12.1.0.2.0 andup for stored procedure calls with INOUT parameters. This behavior change can cause data corruption with current versions of MobiLink server. Therefore, in order to avoid data corruption, any Oracle OCI library versions greater than or equal to 12.1.0.2.0 should not be used with the MobiLink server until further notice.

OS

Windows

7, Server 2008, Server 2008 R2, Server 2012, and Server 2012 R2

Linux

Redhat Enterprise Linux 5, 6, and 7

Solaris

11

AIX

7.1

Pros

All tests passed

Cons

None

Notes

  1. Before using this driver, you must install Oracle 12.1 client. To load this driver, you must set Oracle client libraries in your LD_LIBRARY_PATH (Linux, Solaris) or LIBPATH (AIX).
  2. TNS server name on Windows DSN setting and ServerName in Linux and Unix .odbc.ini are Oracle TNS service name defined in $ORACLE_HOME/network/admin/tnsnames.ora
  3. The default setting of "Procedure return results or uses VARRAY parameters" on Windows or ProcResults on Linux and Unix is 'No'.
  4. Result sets can now be returned by stored procedures through the Oracle implicit result set regardless of the setting for the "Procedure return results or uses VARRAY parameters" parameter.
  5. If you are using a stored procedure that returns a REF CURSOR, the REF CURSOR parameter (either OUT or IN OUT) must be defined as the last parameter in the parameter list of the stored procedure.

Permission requirements

  1. Permission to EXECUTE on SYS.DBMS_UTILITY - required by MobiLink to determine if the database is running on an Oracle RAC.
  2. Permission to SELECT from SYS.GV_$TRANSACTION - required by MobiLink server to do TIMESTAMP based downloads.
  3. Permission to SELECT from SYS.V_$SESSION - required by MobiLink server to determine the SID and SERIAL# values of the current session.
  4. Permission to SELECT from DBA_OBJECTS, SYS.GV_$LOCK and SYS.GV_$SESSION - required by MobiLink server locking/blocking detection logic.

Microsoft SQL Server 2012 and 2014

Important:

With any version of SQL Server, you should specify "SET NOCOUNT ON" as the first statement in all stored procedures or SQL batches executed via ODBC. Without this option, a "number of rows affected" message is sent to MobiLink for each statement executed. If you are doing a relatively large number of inserts, updates, and select into statements, these messages can fill network buffers resulting in data being lost without any indication that it is being lost!

Microsoft SQL Server 2012

Driver

Microsoft SQL Native Client ODBC Driver

Version

2011.110.xxxx.xx

Status

Recommended for use with MobiLink

Client s/w

None

OS

7, Server 2003, Server 2008, Server 2008 R2, and Server 2012

Pros

All tests passed

Cons

None

Notes

Be sure to put "SET NOCOUNT ON" at the start of all stored procedures and batches that are executed via ODBC.

Permission requirements

  1. Permission to VIEW SERVER STATE.
  2. Permission to SELECT from SYS.DATABASES.
  3. Permission to SELECT from SYS.DM_TRAN_LOCKS, SYS.PARTITIONS, SYS.SYSPROCESSES.

Microsoft SQL Server 2014

Driver

Microsoft SQL Native Client ODBC Driver

Version

2011.110.xxxx.xx

Status

Recommended for use with MobiLink

Client s/w

None

OS

7, Server 2003, Server 2008, Server 2008 R2, and Server 2012

Pros

All tests passed

Cons

None

Notes

  1. Be sure to put "SET NOCOUNT ON" at the start of all stored procedures and batches that are executed via ODBC.
  2. SQL Server allows users to control transaction durability at the database and transaction levels.  The durability can be set to be full durability or delayed durability.  In order to maintain data consistency, the MobiLink server requires its transactions with full durability.  So the database option delayed durability should never be setting to FORCED.

Permission requirements

  1. Permission to VIEW SERVER STATE.
  2. Permission to SELECT from SYS.DATABASES.
  3. Permission to SELECT from SYS.DM_TRAN_LOCKS, SYS.PARTITIONS, SYS.SYSPROCESSES.

IBM DB2 9.7 and 10.5

Important:

  • DB2 AS/400 is not supported.
  • Any DB2 Java stored procedures used in MobiLink synchronization should always immediately set autocommit to OFF, for example by using getConnection().setAutoCommit(false).

IBM DB2 9.7

Driver

IBM DB2 ODBC Driver

Version

9.07.300.291 on Windows (x32 and x64) and 9.07.0003 on Linux (x64) - These drivers can be retrieved from DB2 9.7 FixPack3.

Status

Recommended for use with MobiLink

Client s/w

DB2 UDB Client 9.7

OS

Windows

7, Server 2003, and Server 2008 R2

Linux

Redhat Enterprise Linux 5, 6, and 7

Pros

All tests passed

Cons

None

Notes

  1. The ODBC driver version must be 9.0.7.xxxx. Older versions of the IBM DB2 ODBC driver should not be use for the MobiLink server to talk to a DB2 9.7 database, because it can cause data inconsistency.
  2. If you are using timestamp-based download and if any of the download_cursor and/or download_delete_cursor scripts are implemented in stored procedure calls, either the DB2 consolidated database server must run with the configuration parameter, ConcurrentAccessResolution being set to 2 (Wait for outcome), or executing the following SQL command

    CALL SET_ROUTINE_OPTS(GET_ROUTINE_OPTS() || 'CONCURRENTACCESSRESOLUTION WAIT FOR OUTCOME'

    before creating the stored procedures for download_cursor and/or download_delete_cursor scripts is required. Then the DB2 database server will block the download cursors if there are any uncommitted operations that have modified the download cursor results.  Without doing so, new data may not be downloaded to the remote databases and data inconsistency may occur.
  3. When Oracle compatibility features are enabled, DB2 supports some Oracle data types, such as, DATE, VARCHAR2, and NUMBER.  These data types will behave the same as those in an Oracle database.  For detailed data type mapping of these compatible data types between DB2 and SQL Anywhere/UltraLite, please see the MobiLink referencechapter in the MobiLink Server Administration manual.
  4. On Linux, you need to run 'source db2profile' to export DB2 environment variables. db2profile is in the home directory under your DB2 installation.
  5. Two database configuration parameters LOCKLIST and APPLHEAPSZ need to be changed for high load testing. Set LOCKLIST to 500 and APPLHEAPSZ to 1024.

Permission requirements

    Permission to SELECT from SYSIBMADM.LOCKWAITS, SNAPSHOT_APPL_INFO - required by the MobiLink server locking/blocking detection logic.

IBM DB2 10.5

Driver

IBM DB2 ODBC Driver

Version

10.05.200.xxx on Windows and 10.05.0000 on Linux

Status

Recommended for use with MobiLink

Client s/w

DB2 UDB Client 10.5

OS

Windows

7, Server 2003, Server 2008 R2, and Server 2012

Linux

Redhat Enterprise Linux 5, 6, and 7
SuSE Enterprise Linux 12

Pros

All tests passed

Cons

None

Notes

  1. IBM has introduced a column store in its DB2 10.5 release and now supports both column and row stores in 10.5 databases.  However, there are a few restrictions for tables created with a column store and one of these restrictions is Queries cannot be requested to be blocked by any uncommitted transactions for tables created with a column store. This restriction would prevent the MobiLink server from providing a timestamp based synchronization for any tables with a column store in order to maintain data consistency.  Therefore, any tables involved in synchronization with MobiLink must be created with a row store, if the sync logic requires timestamp based downloads.  For sync logic with a snapshot based download, sync tables can be created either with a column store or a row store, but the MobiLink server needs to be started with command line option hwp- (that will inform the MobiLink server to skip requesting the blocking behavior for generating a download for any client), otherwise, the DB2 10.5 database server would complain with the following error:

      SQL1667N  The operation failed because the operation is not supported with the typeof the specified table.  Specified table: sync_table_name.  Table type: "ORGANIZE BY COLUMN".  Operation: "CUR_COMMIT DISABLED".  SQLSTATE=42858

    when the MobiLink server was trying to generate a download for the client.
  2. If you are using timestamp-based download and if any of the download_cursor and/or download_delete_cursor scripts are implemented in stored procedure calls, either the DB2 consolidated database server must run with the configuration parameter, ConcurrentAccessResolution being set to 2 (Wait for outcome), or executing the following SQL command:

    CALL SET_ROUTINE_OPTS(GET_ROUTINE_OPTS() || 'CONCURRENTACCESSRESOLUTION WAIT FOR OUTCOME'

    before creating the stored procedures for download_cursor and/or download_delete_cursor scripts is required. Then the DB2 database server will block the download cursors if there are any uncommitted operations that have modified the download cursor results.  Without doing so, new data may not be downloaded to the remote databases and data inconsistency may occur.
  3. When Oracle compatibility features are enabled, DB2 supports some Oracle data types, such as DATE, VARCHAR2, and NUMBER.  These data types will behave the same as those in an Oracle database.  For detailed data type mapping of these compatible data types between DB2 and SQL Anywhere/UltraLite, please see the MobiLink referencechapter in the MobiLink Server Administration manual.
  4. On Linux, you need to run 'source db2profile' to export DB2 environment variables. db2profile is in the home directory under your DB2 installation. Furthermore, you need to use the 64-bit IBM DB2 ODBC driver, libdb2o.so.
  5. Two database configuration parameters LOCKLIST and APPLHEAPSZ need to be changed for high load testing. Set LOCKLIST to 500 and APPLHEAPSZ to 1024.

Permission requirements

    Permission to SELECT from SYSIBMADM.MON_LOCKWAITS, SNAPSHOT_APPL_INFO - required by the MobiLink server locking/blocking detection logic.

MySQL 5.5.16 and 5.6.20

MySQL 5.5.16

Driver

MySQL ODBC 5.3 UNICODE driver

Version

5.03.04.00 (Win32 and 64) and 05.03.0004 (Linux x64).

Status

Recommended for use with MobiLink

Client s/w

None

OS

Windows

7, Server 2003, Server 2008, Server 2008 R2, and Server 2012

Linux

Redhat Enterprise Linux 5, 6, and 7
SuSE Enterprise Linux 12

Pros

All tests passed

Cons

None

Notes

  1. Storage Engine:

    MySQL offers a set of storage engines in a MySQL server and somestorage engines are ACID compliant and some are not. The MobiLink server requires an ACID compliant storage engine, such as InnoDB, Falcon. Please make sure the default storage engine is ACID compliant. If the default storage engine is not ACID compliant, please make sure all the MobiLink server system tables are created using an ACID compliant storage engine.

  2. Stored Procedures:

    The MySQL ODBC driver does not support inout or out parameters forstored procedure calls. Therefore, all procedures that need inout parameters must be written as functions that can return an out value.

    The MobiLink server events that require inout parameters, such asauthenticate_user, handle_error, modify_user must be implemented as functions and run using a select statement, like
         SELECT function_name( ?, ?, ?, ... )
    and not
         { CALL function_name( ?, ?, ?, ... ) }
    Then the MobiLink server will catch the return value properly.

    If the MobiLink server scripts use named parameters, the parameterswill not be changed after execution of the script. User-defined named parameters, e.g. {ml u.my_var} are thus not supported.

  3. Cursor Scripts:

    The upload_fetch, download_cursor, or download_delete_cursor event maybe written as a select statement and the MobiLink server uses the read-committed isolation level to execute the select statement. However, with the read-committed isolation, the MySQL ODBC driver may allow the MobiLink server to read uncommitted operations (inserts, updates and deletes).  Then with this behavior, synchronization data would not be consistent between the consolidated and remote databases.  This problem has been reported to MySQL.

    To work around this problem, all the select statements for the upload_fetch,download_cursor, and download_delete_cursor events must contain a "lock in share mode" clause.  For instance, a download_cursor script should be written as:
         SELECT col1, col2, ..., coln FROM a_sync_table WHERE last_modified > ? ... LOCK IN SHARE MODE
    if it is a select statement.  With the "lock in share mode" clause, the select statement will be blocked by any uncommitted operations made by the other connections on the same table and then upload updates and download data will be consistent in the consolidated and remote databases.

  4. Linux Platforms:

    There are two ways to specify an ODBC configuration file on Linux

    a) Place the file ODBC.INI (the file name must be in upper case) or symbolic link, ODBC.INI in the home directory of the current user;
    b) Create an environment variable, ODBCINI and setup this environment variable by pointing it to the real ODBC configuration file.

    The MySQL ODBC 5.3 UNICODE driver

    The MySQL 5.3 Unicode ODBC driver does not contain any ANSI functions, if its wide function exists, but the SQLA ODBC driver manager on Linux requires both sets of the ODBC APIs.  To work around this problem, a new DSN property named OnlyWideEntries is introduced on Linux and this property can be set to Yes or No, and the default setting is No.  OnlyWideEntries must be set to Yes on Linux, if the MySQL ODBC driver is used.

    Sample DSN for MySQL on UNIX

    A sample DSN for MySQL on UNIX can be:
      [a_mysql_dsn]
      Driver=full_path/libmyodbc5.so
      server=host_name
      uid=user_name
      pwd=user_password
      database=database_name
      OnlyWideEntries=Yes

MySQL 5.6.20

Driver

MySQL ODBC 5.3 UNICODE driver

Version

5.03.04.00 (Win32 and 64) and 05.03.0004 (Linux x64).

Status

Recommended for use with MobiLink

Client s/w

None

OS

Windows

7, Server 2003, Server 2008, and Server 2008 R2

Linux

Redhat Enterprise Linux 5, 6, and 7
SuSE Enterprise Linux 12

Pros

All tests passed

Cons

None

Notes

  1. Storage Engine:

    MySQL offers a set of storage engines in a MySQL server and somestorage engines are ACID compliant and some are not. The MobiLink server requires an ACID compliant storage engine, such as InnoDB and Falcon. Please make sure the default storage engine is ACID compliant. If the default storage engine is not ACID compliant, please make sure all the MobiLink server system tables are created using an ACID compliant storage engine.

  2. Stored Procedures:

    MySQL now supports INOUT parameters in stored procedures.  Therefore, output parameters for synchronization scripts that are written in stored procedure calls can be retrieved through INOUT parameters or returned by a result set.

  3. Fractional Part of Second:

    MySQL 5.6.20 server supports a fractional part of a second.  The number of digits in the fractional part can be a value between 0 and 6.  The MySQL server will round the fractional second into its nearest integer that can be stored into the column properly.  For instance, if a timestamp column was defined as timestamp(3), the server will round 4.1234 seconds to 4.123 seconds, and 4.1235 seconds to 4.124 before storing the value into the table.

    In order to keep data consistency for a timestamp based download, the MobiLink server will automatically subtract one second from the next_last_download_timestamp generated in the prepare_for_download transaction before sending it to the client, if there is no user-defined generate_next_last_download_timestamp connection script.

  4. Cursor Scripts:

    The upload_fetch, download_cursor, or download_delete_cursor event may be written as a select statement and the MobiLink server uses the read-committed isolation level to execute the select statement. However, with the read-committed isolation, the MySQL ODBC driver may allow the MobiLink server to read uncommitted operations (inserts, updates and deletes).  With this behavior, synchronization data would not be consistent between the consolidated and remote databases.  This problem has been reported to MySQL.

    To work around this problem, all the select statements for the upload_fetch, download_cursor, and download_delete_cursor events must contain a "lock in share mode" clause.  For instance, a download_cursor script should be written as:
         SELECT col1, col2, ..., coln FROM a_sync_table WHERE last_modified > ? ... LOCK IN SHARE MODE
    if it is a select statement.  With the "lock in share mode" clause, the select statement will be blocked by any uncommitted operations made by the other connections on the same table and then upload updates and download data will be consistent in the consolidated and remote databases.

  5. Linux Platforms:

    There are two ways to specify an ODBC configuration file on Linux

    a) Place the file ODBC.INI (the file name must be in upper case) or symbolic link, ODBC.INI in the home directory of the current user;
    b) Create an environment variable, ODBCINI and set this environment variable by pointing it to the real ODBC configuration file.

    The MySQL ODBC 5.3 UNICODE driver

    The MySQL 5.3 Unicode ODBC driver does not contain any ANSI functions, if its wide function exists, but the SQLA ODBC driver manager on Linux requires both sets of the ODBC APIs.  To work around this problem, a new DSN property named OnlyWideEntries is introduced on Linux and this property can be set to Yes or No, and the default setting is No.  OnlyWideEntries must be set to Yes on Linux, if the MySQL ODBC driver is used.

    Sample DSN for MySQL on UNIX

    A sample DSN for MySQL on UNIX can be:
      [a_mysql_dsn]
      Driver=full_path/libmyodbc5.so
      server=host_name
      uid=user_name
      pwd=user_password
      database=database_name
      OnlyWideEntries=Yes

Tags:

No comments