Database Integration may not work if the database format is UTF-8
Note: Applies to RTI Connext DDS 5.0.0 and above.
Database Integration Service may fail silently if the database character set is UTF-8 (by default in MySQL 5.6). As a consequence the communication between the database service and the Database Integration Service daemon (rtirtc_mysql) is not established and the updates on the publication and subscription tables are not propagated. You may detect this behavior by checking if the table RTIRTC_TBL_INFO
has not been created.
You can check the current database character set with the following SQL statement:
SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '<dbname>';
To fix this situation you need to specify the latin1 character set. There are several ways to do this:
Method 1
Change the default character set of the database used by Database Integration Service with the following steps:
- Stop the Database Integration Service daemon.
- Run the following SQL statement to change the database character set:
ALTER DATABASE DEFAULT CHARACTER SET latin1;
- Delete all the Database Integration Service metatables:
RTIDDS_PUBLICATIONS
,RTIDDS_SUBSCRIPTIONS
,RTIRTC_LOG
andRTIRTC_TBL_INFO
. - Start the Database Integration Service daemon.
Method 2
Comment out the following lines or change them to “latin1” inside the file my.ini of your home directory or MySQL installation directory.
default-character-set=utf8 character-set-server=utf8
The MySQL service should be restarted after changing the values. Also, the database should be recreated after restarting:
drop database <dbname>;
create database <dbname>;