Как перевести Mirthconnect на использование MySQL/MariaDB

При попытке подключения mirthconnect для использования mariaDB вместо встроенной базы данных Derby происходит сбой mirth connect при создании базы данных.

С использованием:

  • Убунту 18.04 ЛТС
  • МарияДБ 10.1.29-МарияДБ-6
  • Мирт Коннект 3.6.0
  • Java openjdk 10.0.1

Шаги по настройке:

  1. Установить Мария БД
  2. Установите Мирт Коннект.
  3. Создайте базу данных для использования с Mirth
  4. Создайте пользователя mirth в базе данных Maria.
  5. Настройте mirth connect для подключения к Maria DB
  6. Начать службу веселья

http://www.hpctech.org/8-steps-to-install-mirthconnect-with-mysql-mariadb-on-linux/

При запуске службы mirthconnect возникает следующее исключение.

ERROR 2018-07-04 15:13:11,013 [Main Server Thread]                 com.mirth.connect.server.Mirth: Failed to migrate database schema
com.mirth.connect.model.util.MigrationException: Failed to execute script: /mysql/mysql-database.sql
    at com.mirth.connect.server.migration.Migrator.executeScript(Migrator.java:103)
    at com.mirth.connect.server.migration.Migrator.executeScript(Migrator.java:86)
    at com.mirth.connect.server.migration.ServerMigrator.initDatabase(ServerMigrator.java:234)
    at com.mirth.connect.server.migration.ServerMigrator.migrate(ServerMigrator.java:59)
    at com.mirth.connect.server.controllers.DefaultMigrationController.migrate(DefaultMigrationController.java:91)
    at com.mirth.connect.server.Mirth.startup(Mirth.java:226)
    at com.mirth.connect.server.Mirth.run(Mirth.java:153)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:488)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:408)
    at com.mysql.jdbc.Util.getInstance(Util.java:383)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1062)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4208)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4140)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2597)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2758)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2820)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2769)
    at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:907)
    at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:791)
    at com.mirth.connect.server.migration.Migrator.executeScript(Migrator.java:100)
    ... 6 more

Создана половина таблиц базы данных

show tables;
+------------------------+
| Tables_in_mirthconnect |
+------------------------+
| CHANNEL                |
| EVENT                  |
| PERSON                 |
| PERSON_PASSWORD        |
| PERSON_PREFERENCE      |
| SCHEMA_INFO            |
| SCRIPT                 |
+------------------------+

Может ли кто-нибудь сказать мне:

  • что подразумевает исключение?
  • как устранить ошибку?

person Simon Black    schedule 04.07.2018    source источник


Ответы (1)


Ошибка в вопросе

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes

похоже, это связано с длиной ключа - набор символов по умолчанию для базы данных был utf16, а не utf8, поэтому размер ключа одной из таблиц был фактически больше 767 байтов из-за размера символов в байтах.

При создании базы для веселья - убедитесь, что набор символов установлен в UTF8

create database mirthconnect character set utf8 collate utf8_general_ci;
person Simon Black    schedule 05.07.2018