# Traceback deciphering

**URL:** <https://forum.inductiveautomation.com/t/traceback-deciphering/102431>\
**Category:** Ignition\
**Tags:** vision\
**Created:** [February 17, 2025, 2:53pm UTC](https://forum.inductiveautomation.com/t/traceback-deciphering/102431 "2025-02-17T14:53:09Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Harry\_O\_Brien](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/harry_o_brien/32/54758_2.png) [@Harry\_O\_Brien](https://forum.inductiveautomation.com/u/Harry_O_Brien)\
**Post date:** [February 17, 2025, 9:44am UTC](https://forum.inductiveautomation.com/t/traceback-deciphering/102431/1 "2025-02-17T09:44:55Z")

</div>

I know I'm late but I thought I would add this; I got this error and it turns out the reason for it was because I hadn't set my Ignition Designer to 'Read/Write' mode, so all read queries would work fine but I couldn't write data to the database. This was difficult to diagnose because of verbose error messages that in no way highlighted the main cause of the issue. Here is the error message I got, with the real reason 'Caused by: com.inductiveautomation.ignition.client.gateway\_interface.GatewayException: Cannot run this function when in read-only mode.' about 2/3rds of the way down at the 2nd line that starts with 'Caused By:', very hard to find.

```python
Java Traceback:
Traceback (most recent call last):
  File "<input>", line 107, in <module>
  File "<input>", line 107, in <module>
	at com.inductiveautomation.ignition.common.script.builtin.AbstractDBUtilities.error(AbstractDBUtilities.java:392)
	at com.inductiveautomation.ignition.common.script.builtin.AbstractDBUtilities.runPrepUpdate(AbstractDBUtilities.java:268)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
java.lang.Exception: java.lang.Exception: Error executing system.db.runPrepUpdate(INSERT INTO analysis_connect.oee_data (cell, area, machine, date, run_minutes, run_time_percent, idle_minutes, idle_time_percent, fault_minutes, fault_time_percent, output, target, performance, oee) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?), [triathlon cementless, beading, beading 1, Fri Nov 01 00:00:00 GMT 2024, 1194, 0.8292, 138, 0.0958, 79, 0.0549, 190.0, 216.0, 0.8796296296296297, 0.729388888888889], PowerBI2, , false, false)
	at org.python.core.Py.JavaError(Py.java:547)
	at com.inductiveautomation.ignition.common.script.builtin.AbstractDBUtilities.error(AbstractDBUtilities.java:392)
	at com.inductiveautomation.ignition.common.script.builtin.AbstractDBUtilities.runPrepUpdate(AbstractDBUtilities.java:268)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
	at org.python.core.PyReflectedFunction. __call__ (PyReflectedFunction.java:190)
	at com.inductiveautomation.ignition.common.script.ScriptManager$ReflectedInstanceFunction. __call__ (ScriptManager.java:552)
	at org.python.core.PyObject. __call__ (PyObject.java:494)
	at org.python.core.PyObject. __call__ (PyObject.java:498)
	at org.python.pycode._pyx48.f$0(<input>:117)
	at org.python.pycode._pyx48.call_function(<input>)
	at org.python.core.PyTableCode.call(PyTableCode.java:173)
	at org.python.core.PyCode.call(PyCode.java:18)
	at org.python.core.Py.runCode(Py.java:1687)
	at org.python.core.Py.exec(Py.java:1731)
	at org.python.util.PythonInterpreter.exec(PythonInterpreter.java:277)
	at org.python.util.InteractiveInterpreter.runcode(InteractiveInterpreter.java:130)
	at com.inductiveautomation.ignition.designer.gui.tools.jythonconsole.JythonConsole$ConsoleWorker.doInBackground(JythonConsole.java:611)
	at com.inductiveautomation.ignition.designer.gui.tools.jythonconsole.JythonConsole$ConsoleWorker.doInBackground(JythonConsole.java:599)
	at java.desktop/javax.swing.SwingWorker$1.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.desktop/javax.swing.SwingWorker.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.lang.Exception: Error executing system.db.runPrepUpdate(INSERT INTO database.table(cell, area, machine, date, run_minutes, run_time_percent, idle_minutes, idle_time_percent, fault_minutes, fault_time_percent, output, target, performance, oee) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?), [redacted, redacted, redacted, Fri Nov 01 00:00:00 GMT 2024, 1194, 0.8292, 138, 0.0958, 79, 0.0549, 190.0, 216.0, 0.8796296296296297, 0.729388888888889], redacted, , false, false)
	... 26 more
Caused by: com.inductiveautomation.ignition.client.gateway_interface.GatewayException: Cannot run this function when in read-only mode.
	at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.getResponse(GatewayInterface.java:384)
	at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.sendMessage(GatewayInterface.java:283)
	at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.sendMessage(GatewayInterface.java:278)
	at com.inductiveautomation.ignition.client.script.ClientDBUtilities._runPrepStmt(ClientDBUtilities.java:288)
	at com.inductiveautomation.ignition.common.script.builtin.AbstractDBUtilities.runPrepUpdate(AbstractDBUtilities.java:261)
	... 24 more
Traceback (most recent call last):
  File "<input>", line 107, in <module>
  File "<input>", line 107, in <module>
	at com.inductiveautomation.ignition.common.script.builtin.AbstractDBUtilities.error(AbstractDBUtilities.java:392)
	at com.inductiveautomation.ignition.common.script.builtin.AbstractDBUtilities.runPrepUpdate(AbstractDBUtilities.java:268)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
java.lang.Exception: java.lang.Exception: Error executing system.db.runPrepUpdate(INSERT INTO database.table(cell, area, machine, date, run_minutes, run_time_percent, idle_minutes, idle_time_percent, fault_minutes, fault_time_percent, output, target, performance, oee) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?), [redacted, redacted, redacted, Fri Nov 01 00:00:00 GMT 2024, 1194, 0.8292, 138, 0.0958, 79, 0.0549, 190.0, 216.0, 0.8796296296296297, 0.729388888888889], redacted, , false, false)
>>> 

```

I've redacted some private info from this error message.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [February 17, 2025, 1:21pm UTC](https://forum.inductiveautomation.com/t/traceback-deciphering/102431/2 "2025-02-17T13:21:08Z")

</div>

> [@Harry\_O\_Brien](#):
>
> verbose error messages

Most of use _ **like** _ verbose error messages, as they provide a great deal of troubleshooting information to help zoom right in to a problem. And they are typical for anything in the java world (all of Ignition). Learn to scan the "Caused by" chain whenever the first message isn't informative enough.

---

<div class="post-metadata">

**Author:** ![Harry\_O\_Brien](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/harry_o_brien/32/54758_2.png) [@Harry\_O\_Brien](https://forum.inductiveautomation.com/u/Harry_O_Brien)\
**Post date:** [February 17, 2025, 1:40pm UTC](https://forum.inductiveautomation.com/t/traceback-deciphering/102431/3 "2025-02-17T13:40:56Z")

</div>

Nothing wrong with including plenty of information but there is one line in that 70 lines of error messages with the real problem that should obviously be highlighted.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [February 17, 2025, 1:49pm UTC](https://forum.inductiveautomation.com/t/traceback-deciphering/102431/4 "2025-02-17T13:49:50Z")

</div>

> [@Harry\_O\_Brien](#):
>
> should obviously be highlighted

It would take an AI built into Ignition to unravel tracebacks with that in mind. Now **you** know to inspect the "Caused by" lines. Carry on.

You also won't get this particular message in actual clients. Testing in real clients is necessary for many aspects of Ignition development.

~~(This is not your original topic, so if you want to whine further, you should start a new topic.)~~ _Done_

---

<div class="post-metadata">

**Author:** ![Harry\_O\_Brien](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/harry_o_brien/32/54758_2.png) [@Harry\_O\_Brien](https://forum.inductiveautomation.com/u/Harry_O_Brien)\
**Post date:** [February 17, 2025, 2:53pm UTC](https://forum.inductiveautomation.com/t/traceback-deciphering/102431/5 "2025-02-17T14:53:09Z")

</div>

~~loser~~

I've put up a feature request for better error logging, go give it a vote

[Better formatting on error messages in script console | Voters | Inductive Automation](https://ideas.inductiveautomation.com/ignition-features-and-ideas/p/better-formatting-on-error-messages-in-script-console)

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [February 17, 2025, 2:57pm UTC](https://forum.inductiveautomation.com/t/traceback-deciphering/102431/6 "2025-02-17T14:57:16Z")

</div>

Sticks and stones, yada yada.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [February 17, 2025, 2:57pm UTC](https://forum.inductiveautomation.com/t/traceback-deciphering/102431/7 "2025-02-17T14:57:22Z")

</div>

Closed on February 17, 2025, 2:57pm UTC


