I'm trying to configure LOG4OM 2.27.1.0 (Windows 10) to use external database, which is MariaDB 11.2.
First, I created user in MariaDB with "ALL PRIVILEGES" grants to DB "log4om". After that, I created .sql file with "Deploy MySQL database" section in LOG4OM, trimmed it to not include user deletion and creation and finally applied this file to DB on server, which created database.
Problem is, that after filling all details in configuration, test connection fails with "Database seems not valid" error, and following entry in log:
Code: Select all
2023-05-03 22:08:38.6723 ERROR: [DbMysql][Connect] : [EXCEPTION] Nie można rzutować z elementu DBNull na inne typy. System.InvalidCastException: Nie można rzutować z elementu DBNull na inne typy.
w System.DBNull.System.IConvertible.ToInt32(IFormatProvider provider)
w System.Convert.ToInt32(Object value, IFormatProvider provider)
w MySql.Data.MySqlClient.Driver.LoadCharacterSets(MySqlConnection connection)
w MySql.Data.MySqlClient.Driver.Configure(MySqlConnection connection)
w MySql.Data.MySqlClient.MySqlConnection.Open()
w L4ONG.DAL.MYSQL.DbMysql.Connect(Boolean dje_zPLL8RUVD_ejd)
2023-05-03 22:08:38.6733 WARN: [DatabaseManagement][TestConnection] : Connection not valid
I've read about problems with MariaDB and LOG4OM and tried to recreate needed tables and DB with "CHARACTER SET utf8mb4" in place of utf8 which LOG4OM puts in .sql file by default, but it didn't help.
MariaDB general log shows following query when trying to connect from LOG4OM:
Code: Select all
230504 0:03:47 42 Connect log4om@<IP> on log4om using TCP/IP
42 Query SELECT @@max_allowed_packet, @@character_set_client,
@@character_set_connection, @@license, @@sql_mode, @@lower_case_table_names, @@autocommit
42 Query SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP())
42 Query SHOW COLLATION
42 Quit
Code: Select all
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';
DROP SCHEMA IF EXISTS `log4om` ;
CREATE SCHEMA IF NOT EXISTS `log4om` DEFAULT CHARACTER SET utf8mb4 ;
USE `log4om` ;
-- -----------------------------------------------------
-- Table `log4om`.`informations`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `log4om`.`informations` ;
CREATE TABLE IF NOT EXISTS `log4om`.`informations` (
`programname` VARCHAR(50) NOT NULL,
`programversion` VARCHAR(50) NOT NULL DEFAULT '',
`dbversion` INTEGER NOT NULL DEFAULT 0 )
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8mb4;
INSERT INTO `log4om`.`informations` SET `ProgramName` = 'LOG4OM2', `ProgramVersion` = '', `DBVersion` = 1;
-- -----------------------------------------------------
-- Table `log4om`.`log`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `log4om`.`log` ;
CREATE TABLE IF NOT EXISTS `log4om`.`log` (
`qsoid` BIGINT(17) NOT NULL ,
`callsign` VARCHAR(50) NOT NULL ,
`band` VARCHAR(10) NOT NULL,
`mode` VARCHAR(30) NOT NULL,
`qsodate` DATETIME NOT NULL,
`address` VARCHAR(500) DEFAULT '',
`arrlsect` VARCHAR(50) DEFAULT '',
`age` DECIMAL(18, 3),
`aindex` DECIMAL(18, 3),
`antaz` DECIMAL(18, 3),
`antel` DECIMAL(18, 3),
`antpath` VARCHAR(50) DEFAULT '',
`antenna` VARCHAR(100) DEFAULT '',
`arrlcheck` VARCHAR(50) DEFAULT '',
`bandrx` VARCHAR(10) DEFAULT '',
`callsignurl` VARCHAR(300) DEFAULT '',
`class` VARCHAR(50) DEFAULT '',
`cnty` VARCHAR(200) DEFAULT '',
`comment` VARCHAR(500) DEFAULT '',
`cont` VARCHAR(2) DEFAULT '',
`contactassociations` VARCHAR(500) DEFAULT '',
`contactedop` VARCHAR(50) DEFAULT '',
`contactreferences` JSON ,
`contestid` VARCHAR(50) DEFAULT '',
`country` VARCHAR(100) DEFAULT '',
`cqzone` INTEGER,
`distance` DECIMAL(18, 3),
`dxcc` INTEGER NOT NULL DEFAULT 0,
`eqcall` VARCHAR(50),
`email` VARCHAR(100) DEFAULT '',
`forceinit` INTEGER DEFAULT 0,
`freq` DECIMAL(18, 3) NOT NULL DEFAULT 0,
`freqrx` DECIMAL(18, 3) NOT NULL DEFAULT 0,
`gridsquare` VARCHAR(10) DEFAULT '',
`ituzone` INTEGER,
`kindex` DECIMAL(18, 3),
`lat` DECIMAL(18, 10),
`lon` DECIMAL(18, 10),
`maxbursts` DECIMAL(18, 3),
`msshower` VARCHAR(50) DEFAULT '',
`myassociations` VARCHAR(500) DEFAULT '',
`mydxcc` INTEGER,
`mylat` DECIMAL(18, 10),
`mylon` DECIMAL(18, 10),
`mycity` VARCHAR(100) DEFAULT '',
`mycnty` VARCHAR(200) DEFAULT '',
`mycountry` VARCHAR(100) DEFAULT '',
`mycqzone` INTEGER,
`mygridsquare` VARCHAR(10) DEFAULT '',
`myituZone` INTEGER,
`myname` VARCHAR(300) DEFAULT '',
`mypostalcode` VARCHAR(50) DEFAULT '',
`myreferences` JSON ,
`myrig` VARCHAR(300) DEFAULT '',
`mysig` VARCHAR(300) DEFAULT '',
`mysiginfo` VARCHAR(300) DEFAULT '',
`mystate` VARCHAR(200) DEFAULT '',
`mystreet` VARCHAR(200) DEFAULT '',
`name` VARCHAR(300) DEFAULT '',
`notes` VARCHAR(2000) DEFAULT '',
`nrbursts` DECIMAL(18, 3),
`nrpings` DECIMAL(18, 3),
`operator` VARCHAR(50) DEFAULT '',
`ownercallsign` VARCHAR(50) DEFAULT '',
`pfx` VARCHAR(50) DEFAULT '',
`precedence` VARCHAR(50) DEFAULT '',
`programid` VARCHAR(50) DEFAULT '',
`programversion` VARCHAR(50) DEFAULT '',
`propmode` VARCHAR(50) DEFAULT '',
`qslmsg` VARCHAR(300) DEFAULT '',
`qslvia` VARCHAR(300) DEFAULT '',
`qsocomplete` VARCHAR(50) DEFAULT '',
`qsoconfirmations` JSON ,
`qsoenddate` DATETIME DEFAULT NULL,
`qsorandom` INTEGER NOT NULL DEFAULT 1,
`qth` VARCHAR(300) DEFAULT '',
`rstrcvd` VARCHAR(10) DEFAULT '',
`rstsent` VARCHAR(10) DEFAULT '',
`rxpwr` DECIMAL(18, 3),
`satelliteqso` INTEGER DEFAULT 0,
`satmode` VARCHAR(50) DEFAULT '',
`satname` VARCHAR(300) DEFAULT '',
`sfi` DECIMAL(18, 3),
`sig` VARCHAR(300) DEFAULT '',
`siginfo` VARCHAR(300) DEFAULT '',
`stationcallsign` VARCHAR(50) NOT NULL,
`srx` DECIMAL(18, 3),
`srxstring` VARCHAR(50) DEFAULT '',
`state` VARCHAR(200) DEFAULT '',
`stx` DECIMAL(18, 3),
`stxstring` VARCHAR(50) DEFAULT '',
`swl` INTEGER DEFAULT 0,
`txpwr` DECIMAL(18, 3),
PRIMARY KEY (`mode`,`qsoDate`,`band`,`callsign`),
UNIQUE KEY `QsoId_UNIQUE` (`qsoid`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8mb4;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;