Problem with persistence in OH3

Hi.
I’m trying to get jdbc mysql persistence working in OH3. It works for most of my Items, but I have a few temperature sensors for which I changed the type during the upgrade (from just Number to Number:Temperature) and for these Items I get the following error in the log every time they change value:

-17:28:36.943 [WARN ] [org.openhab.core.items.GenericItem   ] - failed notifying listener 'org.openhab.core.persistence.internal.PersistenceManagerImpl@3476f75e' about state update of item Utetemperatur: class org.openhab.core.library.types.QuantityType cannot be cast to class org.openhab.core.library.types.DecimalType (org.openhab.core.library.types.QuantityType and org.openhab.core.library.types.DecimalType are in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @5e15f295)
java.lang.ClassCastException: class org.openhab.core.library.types.QuantityType cannot be cast to class org.openhab.core.library.types.DecimalType (org.openhab.core.library.types.QuantityType and org.openhab.core.library.types.DecimalType are in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @5e15f295)
        at org.openhab.persistence.jdbc.db.JdbcBaseDAO.storeItemValueProvider(JdbcBaseDAO.java:410) ~[?:?]
        at org.openhab.persistence.jdbc.db.JdbcBaseDAO.doStoreItemValue(JdbcBaseDAO.java:321) ~[?:?]
        at org.openhab.persistence.jdbc.internal.JdbcMapper.storeItemValue(JdbcMapper.java:149) ~[?:?]
        at org.openhab.persistence.jdbc.internal.JdbcPersistenceService.store(JdbcPersistenceService.java:135) ~[?:?]
        at org.openhab.core.persistence.internal.PersistenceManagerImpl.handleStateEvent(PersistenceManagerImpl.java:140) ~[?:?]
        at org.openhab.core.persistence.internal.PersistenceManagerImpl.stateChanged(PersistenceManagerImpl.java:461) ~[?:?]
        at org.openhab.core.items.GenericItem.lambda$1(GenericItem.java:259) [bundleFile:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
        at java.lang.Thread.run(Thread.java:834) [?:?]

I checked in the database and the value for those Items were of decimal(8,2) which I though might be wrong for the new type (?), so I simply deleted those tables, I thought they would be recreated with the new type, but I still get the same error. Anything more I need to change for this to work?

After some Googling I found this, but from what I can understand that particular problem was solved in october. Could @cweitkamp share more light on this?

edit: I’ve now noticed that this goes for all Items that have a type Number:something, same error in the log for all of them. I don’t know if there’s anything I ought to put in the jdbc.cfg to control the type of these Items when being saved in the database? My cfg doesn’t contain much as it is now:

$ grep "^[^#;]" jdbc.cfg
url=jdbc:mysql://127.0.0.1:3306/openhab?serverTimezone=Europe/Stockholm
user=<redacted>
password=<redacted>
tableUseRealItemNames=true

Hi,

did you define an alternative data type for numbers? By default this is a double value. You can find the configuration in your jdbc.cfg file around line 48:

48 #sqltype.NUMBER        =   DOUBLE

I posted my entire jdbc.cfg above (the grep I used is only for removing comment lines). So no, nothing like that.

Alright. Then we have to create another small path to change this line of code:

Ok. Will you do a PR on that?

I don’t really understand though, wouldn’t this happen to anyone trying to persist a QuantityType value using jdbc? Just wondering why I seem to be the only one affected…

It happens, I also have problems with influxDB disease, but it seems, except me, no one experiences them.

Done.

1 Like

I ran into similar problems:

2020-12-28 16:44:57.771 [WARN ] [org.openhab.core.items.GenericItem  ] - failed notifying listener 'org.openhab.core.persistence.internal.PersistenceManagerImpl@7ceca5' about state update of item AutoBedtime: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader 'bootstrap')
java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader 'bootstrap')
	at org.openhab.persistence.jdbc.db.JdbcMysqlDAO.doPingDB(JdbcMysqlDAO.java:93) ~[?:?]
	at org.openhab.persistence.jdbc.internal.JdbcMapper.pingDB(JdbcMapper.java:65) ~[?:?]
	at org.openhab.persistence.jdbc.internal.JdbcMapper.checkDBAccessability(JdbcMapper.java:203) ~[?:?]
	at org.openhab.persistence.jdbc.internal.JdbcPersistenceService.store(JdbcPersistenceService.java:133) ~[?:?]
	at org.openhab.core.persistence.internal.PersistenceManagerImpl.handleStateEvent(PersistenceManagerImpl.java:152) ~[?:?]
	at org.openhab.core.persistence.internal.PersistenceManagerImpl.stateChanged(PersistenceManagerImpl.java:473) ~[?:?]
	at org.openhab.core.items.GenericItem.lambda$1(GenericItem.java:259) [bundleFile:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:834) [?:?]

In my case, a simple cast from int to long does not seem to be possible. This happens for the jdbc persistence mysql, mariadb and sqlite and completely prevents me from persisting my data.

OH3 on RPi4 4GB, fresh installation.

jdbc.cfg:

url=jdbc:mysql://localhost:3306/openhab?serverTimezone=Europe/Berlin
user=user
password=password
sqltype.STRING=TEXT
tableUseRealItemNames=true
enableLogTime=true

User is created, access is granted in all ways, tested multiple times…

jdbc.persist:

Strategies {
	everyMinute	    : "0 * * * * ?"
	every5Minutes   : "0 */5 * * * ?"
    every10Minutes  : "0 */10 * * * ?"
    every15Minutes  : "0 */15 * * * ?"
   	everyHour       : "0 0 * * * ?"
   	everyDay        : "0 0 0 * * ?"
   	default = everyChange, restoreOnStartup
}

Items {
    // Global settings
    AutoBedtime : strategy = everyChange, restoreOnStartup
}

The item AutoBedtime is a simple switch. What am i missing here?

Hi Stephan,

Your issue looks a little bit different. The CCE is thrown in a different line of code. Can you provide a DEBUG log? Would be nice to know if your connection is really working.

Do you see something like this in your log file:

JDBC::openConnection: Driver is available::Yank setupDataSource

Hi Christoph!

Here’s what my log shows if I set the loglevel of the jdbc binding to DEBUG:

14:31:12.639 [DEBUG] [.jdbc.internal.JdbcPersistenceService] - JDBC::activate: persistence service activated
14:31:12.647 [DEBUG] [.jdbc.internal.JdbcPersistenceService] - JDBC::updateConfig
14:31:12.661 [DEBUG] [tence.jdbc.internal.JdbcConfiguration] - JDBC::JdbcConfiguration
14:31:12.667 [DEBUG] [tence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: configuration size = 14
14:31:12.680 [DEBUG] [tence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: user=openhab
14:31:12.686 [DEBUG] [tence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: password exists? true
14:31:12.695 [DEBUG] [tence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: url=jdbc:mariadb://127.0.0.1:3306/openhab?serverTimezone=Europe/Berlin
14:31:12.700 [DEBUG] [tence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: found serviceName = 'mariadb'
14:31:12.705 [DEBUG] [tence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: Init Data Access Object Class: 'org.openhab.persistence.jdbc.db.JdbcMariadbDAO'
14:31:12.720 [DEBUG] [enhab.persistence.jdbc.db.JdbcBaseDAO] - JDBC::initSqlTypes: Initialize the type array
14:31:12.725 [DEBUG] [enhab.persistence.jdbc.db.JdbcBaseDAO] - JDBC::initSqlQueries: 'JdbcMariadbDAO'
14:31:12.738 [DEBUG] [ab.persistence.jdbc.db.JdbcMariadbDAO] - JDBC::initSqlTypes: Initialize the type array
14:31:12.744 [DEBUG] [ab.persistence.jdbc.db.JdbcMariadbDAO] - JDBC::initSqlQueries: 'JdbcMariadbDAO'
14:31:12.748 [DEBUG] [tence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: dBDAO ClassName=org.openhab.persistence.jdbc.db.JdbcMariadbDAO
14:31:12.754 [DEBUG] [tence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: set sqlTypes: itemType=STRINGITEM value=TEXT
14:31:12.759 [DEBUG] [tence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: errReconnectThreshold=1
14:31:12.763 [DEBUG] [tence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: enableLogTime false
14:31:12.772 [DEBUG] [tence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: load JDBC-driverClass was successful: 'org.mariadb.jdbc.Driver'
14:31:12.777 [DEBUG] [tence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: configuration complete. service=jdbc
14:31:12.781 [DEBUG] [.persistence.jdbc.internal.JdbcMapper] - JDBC::pingDB
14:31:12.786 [DEBUG] [.persistence.jdbc.internal.JdbcMapper] - JDBC::openConnection isDriverAvailable: true
14:31:12.790 [INFO ] [.persistence.jdbc.internal.JdbcMapper] - JDBC::openConnection: Driver is available::Yank setupDataSource
14:31:13.161 [DEBUG] [tence.jdbc.internal.JdbcConfiguration] - JDBC::setDbConnected true
14:31:13.168 [DEBUG] [ab.persistence.jdbc.db.JdbcMariadbDAO] - JDBC::initAfterFirstDbConnection: Initializing step, after db is connected.
14:31:13.225 [DEBUG] [hab.persistence.jdbc.utils.DbMetaData] - dbMajorVersion = '10'
14:31:13.230 [DEBUG] [hab.persistence.jdbc.utils.DbMetaData] - dbMinorVersion = '3'
14:31:13.234 [DEBUG] [hab.persistence.jdbc.utils.DbMetaData] - driverMajorVersion = '1'
14:31:13.239 [DEBUG] [hab.persistence.jdbc.utils.DbMetaData] - driverMinorVersion = '3'
14:31:13.243 [DEBUG] [hab.persistence.jdbc.utils.DbMetaData] - dbProductName = 'MySQL'
14:31:13.248 [DEBUG] [hab.persistence.jdbc.utils.DbMetaData] - dbProductVersion = '10.3.27-MariaDB-0+deb10u1'
14:31:13.252 [DEBUG] [tence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: set sqlTypes: itemType=STRINGITEM value=TEXT
14:31:13.257 [DEBUG] [.persistence.jdbc.internal.JdbcMapper] - JDBC::pingDB asking db for name as absolutely first db action, after connection is established.
14:31:13.377 [DEBUG] [.persistence.jdbc.internal.JdbcMapper] - JDBC::checkDBAcessability, first try connection: true
14:31:13.381 [DEBUG] [.jdbc.internal.JdbcPersistenceService] - JDBC::getName: returning name 'jdbc' for queryable persistence service.
14:31:13.386 [DEBUG] [.jdbc.internal.JdbcPersistenceService] - JDBC::updateConfig: configuration complete for service=jdbc.
14:31:13.390 [DEBUG] [.jdbc.internal.JdbcPersistenceService] - JDBC::getName: returning name 'jdbc' for queryable persistence service.
14:31:13.395 [DEBUG] [.jdbc.internal.JdbcPersistenceService] - JDBC::getName: returning name 'jdbc' for queryable persistence service.
14:31:13.399 [DEBUG] [.jdbc.internal.JdbcPersistenceService] - JDBC::getName: returning name 'jdbc' for queryable persistence service.
14:31:13.404 [DEBUG] [.jdbc.internal.JdbcPersistenceService] - JDBC::getName: returning name 'jdbc' for queryable persistence service.
14:31:13.408 [DEBUG] [.jdbc.internal.JdbcPersistenceService] - JDBC::getName: returning name 'jdbc' for queryable persistence service.
14:31:13.421 [DEBUG] [.jdbc.internal.JdbcPersistenceService] - JDBC::getName: returning name 'jdbc' for queryable persistence service.
14:33:03.423 [INFO ] [openhab.event.ItemCommandEvent       ] - Item 'AutoBedtime' received command ON
14:33:03.432 [DEBUG] [.persistence.jdbc.internal.JdbcMapper] - JDBC::pingDB
14:33:03.439 [INFO ] [openhab.event.ItemStateChangedEvent  ] - Item 'AutoBedtime' changed from OFF to ON
14:33:03.441 [DEBUG] [.persistence.jdbc.internal.JdbcMapper] - JDBC::openConnection isDriverAvailable: true
14:33:03.451 [WARN ] [org.openhab.core.items.GenericItem   ] - failed notifying listener 'org.openhab.core.persistence.internal.PersistenceManagerImpl@c2231a' about state update of item AutoBedtime: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader 'bootstrap')
java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader 'bootstrap')
	at org.openhab.persistence.jdbc.db.JdbcMariadbDAO.doPingDB(JdbcMariadbDAO.java:90) ~[?:?]
	at org.openhab.persistence.jdbc.internal.JdbcMapper.pingDB(JdbcMapper.java:65) ~[?:?]
	at org.openhab.persistence.jdbc.internal.JdbcMapper.checkDBAccessability(JdbcMapper.java:203) ~[?:?]
	at org.openhab.persistence.jdbc.internal.JdbcPersistenceService.store(JdbcPersistenceService.java:133) ~[?:?]
	at org.openhab.core.persistence.internal.PersistenceManagerImpl.handleStateEvent(PersistenceManagerImpl.java:152) ~[?:?]
	at org.openhab.core.persistence.internal.PersistenceManagerImpl.stateChanged(PersistenceManagerImpl.java:473) ~[?:?]
	at org.openhab.core.items.GenericItem.lambda$1(GenericItem.java:259) [bundleFile:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:834) [?:?]

Is that what you asked for? As you can see, the line you mentioned appears. From my point of view this is not an issue with the DB, as I double checked that the connection is possible and the user is allowed to access to it. But no table structure is created at all:

[14:40:05] openhabian@openhab:~$ mariadb -u openhab -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 86
Server version: 10.3.27-MariaDB-0+deb10u1 Raspbian 10

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> use openhab;
Database changed
MariaDB [openhab]> show tables;
Empty set (0.001 sec)

MariaDB [openhab]>

In the meantime i did a fresh clean installation of OH3 using the latest image. I do not use an SD card in my Pi as i wanted to have my DB on the same device. Everything is installed on an USB connected SSD.

Any support here is very welcome :confused:

You are using MariaDB. Why are you trying to connect via MySQL driver? Can you change your connection string to:

url=jdbc:mariadb://localhost:3306/openhab?serverTimezone=Europe/Berlin

It doesn’t matter. This is my current setup, with which I generated the log above:

url=jdbc:mariadb://127.0.0.1:3306/openhab?serverTimezone=Europe/Berlin
user=openhab
password=passwordcontaining;char
reconnectCnt=1
waitTimeout=28800
localtime=true
sqltype.string=TEXT

I have the same behavior with the mysql connector and a MySQL database. By the way also if I just use a SQLite persistence.

I receive the following Warning and have no idea to resolve it:

*2021-01-02 15:51:35.215 [WARN ] [persistence.jdbc.internal.JdbcMapper] - JDBC::openConnection: no driver available!

2021-01-02 15:51:35.219 [WARN ] [persistence.jdbc.internal.JdbcMapper] - JDBC::openConnection: no driver available!

2021-01-02 15:51:35.222 [WARN ] [jdbc.internal.JdbcPersistenceService] - JDBC::store: No connection to database. Cannot persist item ‘Shelly1Gartenhaus_Signalstarke (Type=NumberItem, State=1, Label=Signalstärke, Category=073wifi, Tags=[Point], Groups=[Shelly1Gartenhaus])’! Will retry connecting to database when error count:0 equals errReconnectThreshold:0*

@shussong I am afraid I am out of ideas right now. It looks like the binding fails while “sending a ping” to the database to check if the connection is available. The “ping” is a some SELECT 1 statement. The return value - in general the 1 - should be cast to a Long for MariaDB and MySQL DBs.

@Walki Can you provide a DEBUG log? Would be nice to know if your connection is really working.

Do you see something like this in your log file:

JDBC::openConnection: Driver is available::Yank setupDataSource

That’s the typical Novice: Prepared to do everything. But know nothing. I am googling every Linux command. But tell where to get these information. I will do my best.
Openhab.log:

Blockquote2021-01-02 21:41:42.771 [WARN ] [persistence.jdbc.internal.JdbcMapper] - JDBC::openConnection: no driver available!
2021-01-02 21:41:42.774 [WARN ] [persistence.jdbc.internal.JdbcMapper] - JDBC::openConnection: no driver available!
2021-01-02 21:41:42.777 [WARN ] [jdbc.internal.JdbcPersistenceService] - JDBC::store: No connection to database. Cannot persist item ‘Raspberrymatic_Zuletztgesehen (Type=DateTimeItem, State=2021-01-02T21:41:42.765+0100, Label=Zuletzt gesehen, Category=, Tags=[Point], Groups=[WA_Devices_Online])’! Will retry connecting to database when error count:0 equals errReconnectThreshold:0
==> /var/log/openhab/events.log <==
2021-01-02 21:41:42.777 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item ‘Raspberrymatic_Zuletztgesehen’ changed from 2021-01-02T21:40:42.405+0100 to 2021-01-02T21:41:42.765+0100

Installed is only JDBC Persistence mySQL, MapDB Persistence und RR4Dj Persistence.

In Section ‘JDBC Persistence Service’: Should here anything configured? The Database URL is missing by the way… In OH2.5 I never configured anything there.

In front of the error message in my post ago I receive the following error:

2021-01-02 21:52:27.981 [ERROR] [nal.common.AbstractInvocationHandler] - An error occurred while calling method ‘ThingHandler.thingUpdated()’ on ‘org.openhab.binding.hpprinter.internal.HPPrinterHandler@588693’: Invalid URI host: null (authority: fe80:0:0:0:121f:74ff:fe46:a076)

java.lang.IllegalArgumentException: Invalid URI host: null (authority: fe80:0:0:0:121f:74ff:fe46:a076)

at org.eclipse.jetty.client.HttpClient.checkHost(HttpClient.java:510) ~[?:?]

at org.eclipse.jetty.client.HttpClient.newHttpRequest(HttpClient.java:495) ~[?:?]

at org.eclipse.jetty.client.HttpClient.newRequest(HttpClient.java:453) ~[?:?]

at org.eclipse.jetty.client.HttpClient.newRequest(HttpClient.java:442) ~[?:?]

at org.openhab.binding.hpprinter.internal.api.HPWebServerClient.fetchData(HPWebServerClient.java:105) ~[?:?]

at org.openhab.binding.hpprinter.internal.api.HPWebServerClient.getProductUsageFeatures(HPWebServerClient.java:78) ~[?:?]

at org.openhab.binding.hpprinter.internal.HPPrinterBinder.dynamicallyAddChannels(HPPrinterBinder.java:121) ~[?:?]

at org.openhab.binding.hpprinter.internal.HPPrinterHandler.initialize(HPPrinterHandler.java:73) ~[?:?]

at org.openhab.core.thing.binding.BaseThingHandler.thingUpdated(BaseThingHandler.java:152) ~[?:?]

at org.openhab.binding.hpprinter.internal.HPPrinterHandler.thingUpdated(HPPrinterHandler.java:54) ~[?:?]

at jdk.internal.reflect.GeneratedMethodAccessor104.invoke(Unknown Source) ~[?:?]

at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]

at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]

at org.openhab.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:154) [bundleFile:?]

at org.openhab.core.internal.common.Invocation.call(Invocation.java:52) [bundleFile:?]

at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]

at java.lang.Thread.run(Thread.java:834) [?:?]

Yes, of course. You at least should add an URL, a username and a password.

wrt to HP Printer Binding I cannot help you very much. But it sounds like you have to add an URL over there too.

This is what it looks like when I switch to the database, which works perfectly in OH2.5:

2021-01-04 17:25:49.959 [DEBUG] [jdbc.internal.JdbcPersistenceService] - JDBC::activate: persistence service activated
2021-01-04 17:25:49.961 [DEBUG] [jdbc.internal.JdbcPersistenceService] - JDBC::updateConfig
2021-01-04 17:25:49.963 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::JdbcConfiguration
2021-01-04 17:25:49.965 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: configuration size = 17
2021-01-04 17:25:49.968 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: user=u58459
2021-01-04 17:25:49.970 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: password exists? true
2021-01-04 17:25:49.972 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: url=jdbc:mariadb://mysql07.manitu.net:3306/db58459?serverTimezone=Europe/Berlin
2021-01-04 17:25:49.973 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: found serviceName = 'mariadb'
2021-01-04 17:25:49.975 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: Init Data Access Object Class: 'org.openhab.persistence.jdbc.db.JdbcMariadbDAO'
2021-01-04 17:25:49.977 [DEBUG] [nhab.persistence.jdbc.db.JdbcBaseDAO] - JDBC::initSqlTypes: Initialize the type array
2021-01-04 17:25:49.979 [DEBUG] [nhab.persistence.jdbc.db.JdbcBaseDAO] - JDBC::initSqlQueries: 'JdbcMariadbDAO'
2021-01-04 17:25:49.981 [DEBUG] [b.persistence.jdbc.db.JdbcMariadbDAO] - JDBC::initSqlTypes: Initialize the type array
2021-01-04 17:25:49.983 [DEBUG] [b.persistence.jdbc.db.JdbcMariadbDAO] - JDBC::initSqlQueries: 'JdbcMariadbDAO'
2021-01-04 17:25:49.985 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: dBDAO ClassName=org.openhab.persistence.jdbc.db.JdbcMariadbDAO
2021-01-04 17:25:49.987 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: set sqlTypes: itemType=STRINGITEM value=TEXT
2021-01-04 17:25:49.989 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: errReconnectThreshold=1
2021-01-04 17:25:49.991 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: tableUseRealItemNames=true
2021-01-04 17:25:49.993 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: rebuildTableNames=false
2021-01-04 17:25:49.995 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: enableLogTime false
2021-01-04 17:25:49.997 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: load JDBC-driverClass was successful: 'org.mariadb.jdbc.Driver'
2021-01-04 17:25:49.999 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: configuration complete. service=jdbc
2021-01-04 17:25:50.000 [DEBUG] [persistence.jdbc.internal.JdbcMapper] - JDBC::pingDB
2021-01-04 17:25:50.002 [DEBUG] [persistence.jdbc.internal.JdbcMapper] - JDBC::openConnection isDriverAvailable: true
2021-01-04 17:25:50.004 [INFO ] [persistence.jdbc.internal.JdbcMapper] - JDBC::openConnection: Driver is available::Yank setupDataSource
2021-01-04 17:25:50.101 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::setDbConnected true
2021-01-04 17:25:50.103 [DEBUG] [b.persistence.jdbc.db.JdbcMariadbDAO] - JDBC::initAfterFirstDbConnection: Initializing step, after db is connected.
2021-01-04 17:25:50.162 [DEBUG] [ab.persistence.jdbc.utils.DbMetaData] - dbMajorVersion = '10'
2021-01-04 17:25:50.164 [DEBUG] [ab.persistence.jdbc.utils.DbMetaData] - dbMinorVersion = '2'
2021-01-04 17:25:50.167 [DEBUG] [ab.persistence.jdbc.utils.DbMetaData] - driverMajorVersion = '1'
2021-01-04 17:25:50.169 [DEBUG] [ab.persistence.jdbc.utils.DbMetaData] - driverMinorVersion = '3'
2021-01-04 17:25:50.171 [DEBUG] [ab.persistence.jdbc.utils.DbMetaData] - dbProductName = 'MySQL'
2021-01-04 17:25:50.174 [DEBUG] [ab.persistence.jdbc.utils.DbMetaData] - dbProductVersion = '10.2.36-MariaDB-log'
2021-01-04 17:25:50.176 [DEBUG] [ence.jdbc.internal.JdbcConfiguration] - JDBC::updateConfig: set sqlTypes: itemType=STRINGITEM value=TEXT
2021-01-04 17:25:50.179 [DEBUG] [persistence.jdbc.internal.JdbcMapper] - JDBC::pingDB asking db for name as absolutely first db action, after connection is established.
2021-01-04 17:25:50.263 [DEBUG] [persistence.jdbc.internal.JdbcMapper] - JDBC::checkDBAcessability, first try connection: true
2021-01-04 17:25:50.265 [DEBUG] [jdbc.internal.JdbcPersistenceService] - JDBC::getName: returning name 'jdbc' for queryable persistence service.
2021-01-04 17:25:50.267 [DEBUG] [jdbc.internal.JdbcPersistenceService] - JDBC::updateConfig: configuration complete for service=jdbc.
2021-01-04 17:25:50.270 [DEBUG] [jdbc.internal.JdbcPersistenceService] - JDBC::getName: returning name 'jdbc' for queryable persistence service.
2021-01-04 17:25:50.272 [DEBUG] [jdbc.internal.JdbcPersistenceService] - JDBC::getName: returning name 'jdbc' for queryable persistence service.
2021-01-04 17:25:50.274 [DEBUG] [jdbc.internal.JdbcPersistenceService] - JDBC::getName: returning name 'jdbc' for queryable persistence service.
2021-01-04 17:25:50.276 [DEBUG] [jdbc.internal.JdbcPersistenceService] - JDBC::getName: returning name 'jdbc' for queryable persistence service.
2021-01-04 17:25:50.278 [DEBUG] [jdbc.internal.JdbcPersistenceService] - JDBC::getName: returning name 'jdbc' for queryable persistence service.
2021-01-04 17:25:50.289 [DEBUG] [jdbc.internal.JdbcPersistenceService] - JDBC::getName: returning name 'jdbc' for queryable persistence service.
2021-01-04 17:26:29.940 [DEBUG] [persistence.jdbc.internal.JdbcMapper] - JDBC::pingDB
2021-01-04 17:26:29.942 [DEBUG] [persistence.jdbc.internal.JdbcMapper] - JDBC::openConnection isDriverAvailable: true
2021-01-04 17:26:29.985 [DEBUG] [persistence.jdbc.internal.JdbcMapper] - JDBC::checkDBAcessability, first try connection: true
2021-01-04 17:26:29.986 [WARN ] [jdbc.internal.JdbcPersistenceService] - JDBC::store:  No connection to database. Cannot persist item 'AutoBedtime (Type=SwitchItem, State=OFF, Label=Automatischer Bettmodus, Category=sh_night)'! Will retry connecting to database when error count:0 equals errReconnectThreshold:1

The casting error disappears - but despite the fact that the log says that the connection was successfully established, it somehow loses the connection while trying to write some data. This time I did the configuration in UI, but it doesn’t matter where I do it - the result is always the same.

Still no ideas? :pensive:

Hello,
I have OH3 3.1.0M2 and i can’t get JDBC mariadb to work.
It used to work in OH2.5. Now I have created a new database and I’m keep getting the below errors. I can see connections to the SQL server but I don’t see any entries in database. This is a new database

Any ideas ? :slight_smile:

2021-03-21 20:00:22.527 [WARN ] [org.openhab.core.items.GenericItem ] - failed notifying listener ‘org.openhab.core.persistence.internal.PersistenceManagerImpl@2470dbf0’ about state update of item Current_DateTime: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader ‘bootstrap’)
java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader ‘bootstrap’)
at org.openhab.persistence.jdbc.db.JdbcMariadbDAO.doPingDB(JdbcMariadbDAO.java:92) ~[?:?]
at org.openhab.persistence.jdbc.internal.JdbcMapper.pingDB(JdbcMapper.java:72) ~[?:?]
at org.openhab.persistence.jdbc.internal.JdbcMapper.checkDBAccessability(JdbcMapper.java:211) ~[?:?]
at org.openhab.persistence.jdbc.internal.JdbcPersistenceService.store(JdbcPersistenceService.java:136) ~[?:?]
at org.openhab.core.persistence.internal.PersistenceManagerImpl.handleStateEvent(PersistenceManagerImpl.java:152) ~[?:?]
at org.openhab.core.persistence.internal.PersistenceManagerImpl.stateChanged(PersistenceManagerImpl.java:473) ~[?:?]
at org.openhab.core.items.GenericItem.lambda$1(GenericItem.java:259) [bundleFile:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
at java.lang.Thread.run(Thread.java:834) [?:?]
2021-03-21 20:00:22.840 [WARN ] [org.openhab.core.items.GenericItem ] - failed notifying listener ‘org.openhab.core.persistence.internal.PersistenceManagerImpl@2470dbf0’ about state update of item Sun_Elevation: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader ‘bootstrap’)
java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader ‘bootstrap’)
at org.openhab.persistence.jdbc.db.JdbcMariadbDAO.doPingDB(JdbcMariadbDAO.java:92) ~[?:?]
at org.openhab.persistence.jdbc.internal.JdbcMapper.pingDB(JdbcMapper.java:72) ~[?:?]
at org.openhab.persistence.jdbc.internal.JdbcMapper.checkDBAccessability(JdbcMapper.java:211) ~[?:?]
at org.openhab.persistence.jdbc.internal.JdbcPersistenceService.store(JdbcPersistenceService.java:136) ~[?:?]
at org.openhab.core.persistence.internal.PersistenceManagerImpl.handleStateEvent(PersistenceManagerImpl.java:152) ~[?:?]
at org.openhab.core.persistence.internal.PersistenceManagerImpl.stateChanged(PersistenceManagerImpl.java:473) ~[?:?]
at org.openhab.core.items.GenericItem.lambda$1(GenericItem.java:259) [bundleFile:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
at java.lang.Thread.run(Thread.java:834) [?:?]
2021-03-21 20:00:22.842 [WARN ] [org.openhab.core.items.GenericItem ] - failed notifying listener ‘org.openhab.core.persistence.internal.PersistenceManagerImpl@2470dbf0’ about state update of item Azimuth: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader ‘bootstrap’)
java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader ‘bootstrap’)
at org.openhab.persistence.jdbc.db.JdbcMariadbDAO.doPingDB(JdbcMariadbDAO.java:92) ~[?:?]
at org.openhab.persistence.jdbc.internal.JdbcMapper.pingDB(JdbcMapper.java:72) ~[?:?]
at org.openhab.persistence.jdbc.internal.JdbcMapper.checkDBAccessability(JdbcMapper.java:211) ~[?:?]
at org.openhab.persistence.jdbc.internal.JdbcPersistenceService.store(JdbcPersistenceService.java:136) ~[?:?]
at org.openhab.core.persistence.internal.PersistenceManagerImpl.handleStateEvent(PersistenceManagerImpl.java:152) ~[?:?]
at org.openhab.core.persistence.internal.PersistenceManagerImpl.stateChanged(PersistenceManagerImpl.java:473) ~[?:?]
at org.openhab.core.items.GenericItem.lambda$1(GenericItem.java:259) [bundleFile:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
at java.lang.Thread.run(Thread.java:834) [?:?]
2021-03-21 20:00:22.903 [WARN ] [org.openhab.core.items.GenericItem ] - failed notifying listener ‘org.openhab.core.persistence.internal.PersistenceManagerImpl@2470dbf0’ about state update of item Moon_Elevation: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader ‘bootstrap’)
java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader ‘bootstrap’)
at org.openhab.persistence.jdbc.db.JdbcMariadbDAO.doPingDB(JdbcMariadbDAO.java:92) ~[?:?]
at org.openhab.persistence.jdbc.internal.JdbcMapper.pingDB(JdbcMapper.java:72) ~[?:?]
at org.openhab.persistence.jdbc.internal.JdbcMapper.checkDBAccessability(JdbcMapper.java:211) ~[?:?]
at org.openhab.persistence.jdbc.internal.JdbcPersistenceService.store(JdbcPersistenceService.java:136) ~[?:?]
at org.openhab.core.persistence.internal.PersistenceManagerImpl.handleStateEvent(PersistenceManagerImpl.java:152) ~[?:?]
at org.openhab.core.persistence.internal.PersistenceManagerImpl.stateChanged(PersistenceManagerImpl.java:473) ~[?:?]
at org.openhab.core.items.GenericItem.lambda$1(GenericItem.java:259) [bundleFile:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
at java.lang.Thread.run(Thread.java:834) [?:?]
2021-03-21 20:00:25.546 [WARN ] [org.openhab.core.items.GenericItem ] - failed notifying listener ‘org.openhab.core.persistence.internal.PersistenceManagerImpl@2470dbf0’ about state update of item Inputholding23298: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader ‘bootstrap’)
java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader ‘bootstrap’)
at org.openhab.persistence.jdbc.db.JdbcMariadbDAO.doPingDB(JdbcMariadbDAO.java:92) ~[?:?]
at org.openhab.persistence.jdbc.internal.JdbcMapper.pingDB(JdbcMapper.java:72) ~[?:?]
at org.openhab.persistence.jdbc.internal.JdbcMapper.checkDBAccessability(JdbcMapper.java:211) ~[?:?]
at org.openhab.persistence.jdbc.internal.JdbcPersistenceService.store(JdbcPersistenceService.java:136) ~[?:?]
at org.openhab.core.persistence.internal.PersistenceManagerImpl.handleStateEvent(PersistenceManagerImpl.java:152) ~[?:?]
at org.openhab.core.persistence.internal.PersistenceManagerImpl.stateChanged(PersistenceManagerImpl.java:473) ~[?:?]
at org.openhab.core.items.GenericItem.lambda$1(GenericItem.java:259) [bundleFile:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
at java.lang.Thread.run(Thread.java:834) [?:?]

Note that i have downgraded to OH3 3.0.1 Stable and I have the same issue