Error Caused by: java.sql.SQLException: [SQLITE_CORRUPT] The database disk image is malformed (database disk image is malformed)

I've had to do some changes to one of the older projects of the company in 7.9

And we had a weird bug a couple of hours after i did an update, but it does not seem related to my code at all, yet i have to take alook at it, eventho i dont know anything about 7.9 :stuck_out_tongue:

Restarting the gateway fixed it.

This seem to have happend on a system.tag.read()
Noticable are the "Caused by: simpleorm.utils.SException$Jdbc: Preparing 'SELECT SQLTag..."
and " Caused by: java.sql.SQLException: [SQLITE_CORRUPT] The database disk image is malformed (database disk image is malformed) "

com.inductiveautomation.ignition.common.script.JythonExecException: Traceback (most recent call last): File "", line 3, in alarmActive File "", line 5, in sendNotification at simpleorm.sessionjdbc.SQueryExecute.prepareStatement(SQueryExecute.java:132) at simpleorm.sessionjdbc.SQueryExecute.executeQuery(SQueryExecute.java:58) at simpleorm.sessionjdbc.SSessionJdbc.queryNoFlush(SSessionJdbc.java:500) at simpleorm.sessionjdbc.SSessionJdbc.query(SSessionJdbc.java:509) at com.inductiveautomation.ignition.gateway.localdb.PersistenceInterfaceImpl.query(PersistenceInterfaceImpl.java:146) at com.inductiveautomation.ignition.gateway.sqltags.tagproviders.internal.InternalTagStore._loadTags(InternalTagStore.java:1771) at com.inductiveautomation.ignition.gateway.sqltags.tagproviders.internal.InternalTagStore.loadTags(InternalTagStore.java:1720) at com.inductiveautomation.ignition.gateway.sqltags.tagproviders.internal.InternalTagStore.getDefinitions(InternalTagStore.java:2174) at com.inductiveautomation.ignition.gateway.sqltags.providers.AbstractStoreBasedTagProvider.wrapTagsToDef(AbstractStoreBasedTagProvider.java:1548) at com.inductiveautomation.ignition.gateway.sqltags.providers.AbstractStoreBasedTagProvider.browse(AbstractStoreBasedTagProvider.java:1451) at com.inductiveautomation.ignition.gateway.sqltags.providers.RedundantProviderWrapper.browse(RedundantProviderWrapper.java:152) at com.inductiveautomation.ignition.gateway.sqltags.SQLTagsManagerImpl.browse(SQLTagsManagerImpl.java:524) at com.inductiveautomation.ignition.gateway.script.ialabs.IALabsTagFunctions._browseTags(IALabsTagFunctions.java:150) at com.inductiveautomation.ignition.gateway.script.ialabs.IALabsTagFunctions.browseTagsImpl(IALabsTagFunctions.java:137) at com.inductiveautomation.ignition.common.script.builtin.ialabs.AbstractIALabsTagFunctions.browseTags(AbstractIALabsTagFunctions.java:29) at sun.reflect.GeneratedMethodAccessor143.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) simpleorm.utils.SException$Jdbc: simpleorm.utils.SException$Jdbc: Preparing 'SELECT SQLTag.SQLTag_ID, SQLTag.ProviderId, SQLTag.OwnerId, SQLTag.Name, SQLTag.Path, SQLTag.Enabled, SQLTag.TagType, SQLTag.DataType, SQLTag.AccessRights, SQLTag.Scanclass FROM SQLTag WHERE (SQLTag.OwnerId > ? ) AND (SQLTag.OwnerId IN (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ) ORDER BY SQLTag.SQLTag_ID'

at org.python.core.Py.JavaError(Py.java:495)

at org.python.core.Py.JavaError(Py.java:488)

at org.python.core.PyReflectedFunction.__call__(PyReflectedFunction.java:188)

at com.inductiveautomation.ignition.common.script.ScriptManager$ReflectedInstanceFunction.__call__(ScriptManager.java:438)

at org.python.core.PyObject.__call__(PyObject.java:320)

at org.python.pycode._pyx93771.sendNotification$1(:7)

at org.python.pycode._pyx93771.call_function()

at org.python.core.PyTableCode.call(PyTableCode.java:165)

at org.python.core.PyBaseCode.call(PyBaseCode.java:166)

at org.python.core.PyFunction.__call__(PyFunction.java:338)

at org.python.pycode._pyx15.alarmActive$1(:3)

at org.python.pycode._pyx15.call_function()

at org.python.core.PyTableCode.call(PyTableCode.java:165)

at org.python.core.PyBaseCode.call(PyBaseCode.java:301)

at org.python.core.PyFunction.function___call__(PyFunction.java:376)

at org.python.core.PyFunction.__call__(PyFunction.java:371)

at org.python.core.PyFunction.__call__(PyFunction.java:361)

at org.python.core.PyFunction.__call__(PyFunction.java:356)

at com.inductiveautomation.ignition.common.script.ScriptManager.runFunction(ScriptManager.java:670)

at com.inductiveautomation.ignition.common.sqltags.scripts.TagScriptManager$FunctionInvokerImpl.run(TagScriptManager.java:466)

at com.inductiveautomation.ignition.common.sqltags.scripts.AbstractTagScript.invoke(AbstractTagScript.java:34)

at com.inductiveautomation.ignition.common.sqltags.scripts.TagScriptManager$Task.invoke(TagScriptManager.java:419)

at com.inductiveautomation.ignition.common.sqltags.scripts.TagScriptManager$TagScriptDispatcher.run(TagScriptManager.java:384)

at com.inductiveautomation.ignition.common.execution.impl.BasicExecutionEngine$ThrowableCatchingRunnable.run(BasicExecutionEngine.java:546)

at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)

at java.util.concurrent.FutureTask.run(Unknown Source)

at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(Unknown Source)

at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

Caused by: org.python.core.PyException: Traceback (most recent call last): File "", line 3, in alarmActive File "", line 5, in sendNotification at simpleorm.sessionjdbc.SQueryExecute.prepareStatement(SQueryExecute.java:132) at simpleorm.sessionjdbc.SQueryExecute.executeQuery(SQueryExecute.java:58) at simpleorm.sessionjdbc.SSessionJdbc.queryNoFlush(SSessionJdbc.java:500) at simpleorm.sessionjdbc.SSessionJdbc.query(SSessionJdbc.java:509) at com.inductiveautomation.ignition.gateway.localdb.PersistenceInterfaceImpl.query(PersistenceInterfaceImpl.java:146) at com.inductiveautomation.ignition.gateway.sqltags.tagproviders.internal.InternalTagStore._loadTags(InternalTagStore.java:1771) at com.inductiveautomation.ignition.gateway.sqltags.tagproviders.internal.InternalTagStore.loadTags(InternalTagStore.java:1720) at com.inductiveautomation.ignition.gateway.sqltags.tagproviders.internal.InternalTagStore.getDefinitions(InternalTagStore.java:2174) at com.inductiveautomation.ignition.gateway.sqltags.providers.AbstractStoreBasedTagProvider.wrapTagsToDef(AbstractStoreBasedTagProvider.java:1548) at com.inductiveautomation.ignition.gateway.sqltags.providers.AbstractStoreBasedTagProvider.browse(AbstractStoreBasedTagProvider.java:1451) at com.inductiveautomation.ignition.gateway.sqltags.providers.RedundantProviderWrapper.browse(RedundantProviderWrapper.java:152) at com.inductiveautomation.ignition.gateway.sqltags.SQLTagsManagerImpl.browse(SQLTagsManagerImpl.java:524) at com.inductiveautomation.ignition.gateway.script.ialabs.IALabsTagFunctions._browseTags(IALabsTagFunctions.java:150) at com.inductiveautomation.ignition.gateway.script.ialabs.IALabsTagFunctions.browseTagsImpl(IALabsTagFunctions.java:137) at com.inductiveautomation.ignition.common.script.builtin.ialabs.AbstractIALabsTagFunctions.browseTags(AbstractIALabsTagFunctions.java:29) at sun.reflect.GeneratedMethodAccessor143.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) simpleorm.utils.SException$Jdbc: simpleorm.utils.SException$Jdbc: Preparing 'SELECT SQLTag.SQLTag_ID, SQLTag.ProviderId, SQLTag.OwnerId, SQLTag.Name, SQLTag.Path, SQLTag.Enabled, SQLTag.TagType, SQLTag.DataType, SQLTag.AccessRights, SQLTag.Scanclass FROM SQLTag WHERE (SQLTag.OwnerId > ? ) AND (SQLTag.OwnerId IN (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ) ORDER BY SQLTag.SQLTag_ID'

... 31 common frames omitted

Caused by: simpleorm.utils.SException$Jdbc: Preparing 'SELECT SQLTag.SQLTag_ID, SQLTag.ProviderId, SQLTag.OwnerId, SQLTag.Name, SQLTag.Path, SQLTag.Enabled, SQLTag.TagType, SQLTag.DataType, SQLTag.AccessRights, SQLTag.Scanclass FROM SQLTag WHERE (SQLTag.OwnerId > ? ) AND (SQLTag.OwnerId IN (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ) ORDER BY SQLTag.SQLTag_ID'

at simpleorm.sessionjdbc.SQueryExecute.prepareStatement(SQueryExecute.java:132)

at simpleorm.sessionjdbc.SQueryExecute.executeQuery(SQueryExecute.java:58)

at simpleorm.sessionjdbc.SSessionJdbc.queryNoFlush(SSessionJdbc.java:500)

at simpleorm.sessionjdbc.SSessionJdbc.query(SSessionJdbc.java:509)

at com.inductiveautomation.ignition.gateway.localdb.PersistenceInterfaceImpl.query(PersistenceInterfaceImpl.java:146)

at com.inductiveautomation.ignition.gateway.sqltags.tagproviders.internal.InternalTagStore._loadTags(InternalTagStore.java:1771)

at com.inductiveautomation.ignition.gateway.sqltags.tagproviders.internal.InternalTagStore.loadTags(InternalTagStore.java:1720)

at com.inductiveautomation.ignition.gateway.sqltags.tagproviders.internal.InternalTagStore.getDefinitions(InternalTagStore.java:2174)

at com.inductiveautomation.ignition.gateway.sqltags.providers.AbstractStoreBasedTagProvider.wrapTagsToDef(AbstractStoreBasedTagProvider.java:1548)

at com.inductiveautomation.ignition.gateway.sqltags.providers.AbstractStoreBasedTagProvider.browse(AbstractStoreBasedTagProvider.java:1451)

at com.inductiveautomation.ignition.gateway.sqltags.providers.RedundantProviderWrapper.browse(RedundantProviderWrapper.java:152)

at com.inductiveautomation.ignition.gateway.sqltags.SQLTagsManagerImpl.browse(SQLTagsManagerImpl.java:524)

at com.inductiveautomation.ignition.gateway.script.ialabs.IALabsTagFunctions._browseTags(IALabsTagFunctions.java:150)

at com.inductiveautomation.ignition.gateway.script.ialabs.IALabsTagFunctions.browseTagsImpl(IALabsTagFunctions.java:137)

at com.inductiveautomation.ignition.common.script.builtin.ialabs.AbstractIALabsTagFunctions.browseTags(AbstractIALabsTagFunctions.java:29)

at sun.reflect.GeneratedMethodAccessor143.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at org.python.core.PyReflectedFunction.__call__(PyReflectedFunction.java:186)

... 28 common frames omitted

Caused by: java.sql.SQLException: [SQLITE_CORRUPT] The database disk image is malformed (database disk image is malformed)

at org.sqlite.core.DB.newSQLException(DB.java:890)

at org.sqlite.core.DB.newSQLException(DB.java:901)

at org.sqlite.core.DB.throwex(DB.java:868)

at org.sqlite.core.NativeDB.prepare(Native Method)

at org.sqlite.core.DB.prepare(DB.java:211)

at org.sqlite.core.CorePreparedStatement.(CorePreparedStatement.java:40)

at org.sqlite.jdbc3.JDBC3PreparedStatement.(JDBC3PreparedStatement.java:29)

at org.sqlite.jdbc4.JDBC4PreparedStatement.(JDBC4PreparedStatement.java:18)

at org.sqlite.jdbc4.JDBC4Connection.prepareStatement(JDBC4Connection.java:47)

at org.sqlite.jdbc3.JDBC3Connection.prepareStatement(JDBC3Connection.java:254)

at com.inductiveautomation.ignition.gateway.localdb.sqlite.SingleConnectionDatasource$ProtectedConnection.prepareStatement(SingleConnectionDatasource.java:224)

at com.inductiveautomation.ignition.gateway.localdb.DelegatingDataSource$DelegatingConnection.prepareStatement(DelegatingDataSource.java:236)

at simpleorm.sessionjdbc.SQueryExecute.prepareStatement(SQueryExecute.java:129)


Maybe related,
It also seems that when i do an update, the wrapper.log file stops adding new things. Though i do still see new logs in the main/web/status/diag.logviewer.

ps: im going on holidays for 3 weeks so i'm probably not going to reply on this a lot.
Just hoping someone had an idea

took a look into the data/db folder and found this...

image
seems to match the hour...
with what can i open the idb file?

i tried sqlite and sqlite said it failed to open because it was "malformed"

You need to create a new sqlite DB. You might be able to salvage some data:

1 Like

thanks, i'll give it a try when im back from the holiday if it doesnt happen again and i get called before that xd

a year later something similar like this happend again.
This time it was
Caused by: java.sql.SQLException: [SQLITE_NOTADB] File opened that is not a database file (file is encrypted or is not a database)

I was saving a couple of times in short succesion... might be the cause that it tried to look for a file that was still in progress of being made when saving?

the wrapper.log does not contain these messages, yet i see them on the status gateway screen.


Its followed by a bunch of similar errors for tag services and stuff

it has this faulted .idb file again, this time it opens, i see some traces of loggs, som queries and a storage of usernames... but most of it is unreadable. The software i used to open it said it was of a different version so maybe thats why.

Anyways restart solved it. Just logging it here incase someone else has this