# NamedQuery - Get LAST\_INSERT\_ID with MariaDB

**URL:** <https://forum.inductiveautomation.com/t/namedquery-get-last-insert-id-with-mariadb/27030>\
**Category:** Ignition\
**Tags:** namedqueries, ignition80, vision\
**Created:** [July 31, 2019, 4:43am UTC](https://forum.inductiveautomation.com/t/namedquery-get-last-insert-id-with-mariadb/27030 "2019-07-31T04:43:09Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![joel.golinucci](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/joel.golinucci/32/9927_2.png) [@joel.golinucci](https://forum.inductiveautomation.com/u/joel.golinucci)\
**Post date:** [July 31, 2019, 4:43am UTC](https://forum.inductiveautomation.com/t/namedquery-get-last-insert-id-with-mariadb/27030/1 "2019-07-31T04:43:09Z")

</div>

Hi,

I had a project with a database on MS SQL Server, that used a named query (of type Scalar Query) to perform an `INSERT` followed by a `SELECT @@identity`. This worked well.

Then our client requested that we switch to MariaDB, so I modified the select part of the query to be `SELECT LAST_INSERT_ID()`. This works well in any MariaDB client, but it is not working in Ignition !  
I get the following message :

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/2X/c/cd893e950e690dd19fd74401662c35de47293d81.png)

> com.inductiveautomation.ignition.client.gateway\_interface.GatewayException: java.sql.SQLSyntaxErrorException: (conn=46) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'SELECT LAST\_INSERT\_ID()  
> at com.inductiveautomation.ignition.client.gateway\_interface.GatewayInterface.newGatewayException(GatewayInterface.java:341)  
> at com.inductiveautomation.ignition.client.gateway\_interface.GatewayInterface.sendMessage(GatewayInterface.java:315)  
> at com.inductiveautomation.ignition.client.gateway\_interface.GatewayInterface.sendMessage(GatewayInterface.java:268)  
> at com.inductiveautomation.ignition.client.gateway\_interface.GatewayInterface.invoke(GatewayInterface.java:905)  
> at com.inductiveautomation.ignition.designer.db.namedquery.workspace.NamedQueryTestingPanel$1$1.doInBackground(NamedQueryTestingPanel.java:300)  
> at com.inductiveautomation.ignition.designer.db.namedquery.workspace.NamedQueryTestingPanel$1$1.doInBackground(NamedQueryTestingPanel.java:282)  
> 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: java.sql.SQLSyntaxErrorException: (conn=46) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'SELECT LAST\_INSERT\_ID()  
> at com.inductiveautomation.ignition.gateway.db.namedquery.NamedQueryExecutor$NamedQueryInstance.execute(NamedQueryExecutor.java:382)  
> at com.inductiveautomation.ignition.gateway.db.namedquery.NamedQueryExecutor.execute(NamedQueryExecutor.java:167)  
> at com.inductiveautomation.ignition.gateway.db.namedquery.GatewayNamedQueryManager.execute(GatewayNamedQueryManager.java:94)  
> at com.inductiveautomation.ignition.gateway.servlets.gateway.functions.NamedQueryFunctions.executeNamedQuery(NamedQueryFunctions.java:61)  
> at jdk.internal.reflect.GeneratedMethodAccessor46.invoke(null)  
> at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(null)  
> at java.lang.reflect.Method.invoke(null)  
> at com.inductiveautomation.ignition.gateway.servlets.gateway.AbstractGatewayFunction.invoke(AbstractGatewayFunction.java:225)  
> at com.inductiveautomation.ignition.gateway.servlets.Gateway.doPost(Gateway.java:409)  
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)  
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)  
> at com.inductiveautomation.ignition.gateway.bootstrap.MapServlet.service(MapServlet.java:86)  
> at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:852)  
> at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:535)  
> at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)  
> at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)  
> at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)  
> at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:190)  
> at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595)  
> at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:188)  
> at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1253)  
> at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:168)  
> at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)  
> at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564)  
> at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:166)  
> at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1155)  
> at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)  
> at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)  
> at org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:335)  
> at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:61)  
> at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)  
> at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)  
> at org.eclipse.jetty.server.Server.handle(Server.java:530)  
> at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:347)  
> at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:256)  
> at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:279)  
> at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102)  
> at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:124)  
> at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:247)  
> at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:140)  
> at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)  
> at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:382)  
> at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:708)  
> at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:626)  
> at java.lang.Thread.run(null)

Ignition v8.0.2 (b2019060511)  
Java: Azul Systems, Inc. 11.0.3

---

<div class="post-metadata">

**Author:** ![joel.golinucci](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/joel.golinucci/32/9927_2.png) [@joel.golinucci](https://forum.inductiveautomation.com/u/joel.golinucci)\
**Post date:** [July 31, 2019, 7:12am UTC](https://forum.inductiveautomation.com/t/namedquery-get-last-insert-id-with-mariadb/27030/2 "2019-07-31T07:12:34Z")

</div>

The solution is now included on the last release (8.0.3).

There is now a getKey parameter on the runNamedQuery (as there was already on the runPrepQuery), that returns the inserted ID if set to 1.

[https://docs.inductiveautomation.com/display/DOC80/system.db.runNamedQuery](https://docs.inductiveautomation.com/display/DOC80/system.db.runNamedQuery)
