Getting WARN: SQL Error: 1205, SQLState: 41000 ERROR: Exceeded timeout; wait timeout; try restarting the transaction. Saving a recording when using sleep mode

I am new to java web application development and trying to save a record using sleep mode in mySQL database but getting an error when trying to save a record.

POJO Class

package defaultpackage; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; public class Sirs implements java.io.Serializable { private int sirsid; private String sirsDescription; private String submitter; public Sirs() { } public Sirs(int sirsid) { this.sirsid = sirsid; } public Sirs(int sirsid, String sirsDescription, String submitter) { this.sirsid = sirsid; this.sirsDescription = sirsDescription; this.submitter = submitter; } @GeneratedValue(strategy=GenerationType.TABLE) public int getSirsid() { return this.sirsid; } public void setSirsid(int sirsid) { this.sirsid = sirsid; } public String getSirsDescription() { return this.sirsDescription; } public void setSirsDescription(String sirsDescription) { this.sirsDescription = sirsDescription; } public String getSubmitter() { return this.submitter; } public void setSubmitter(String submitter) { this.submitter = submitter; } } 

sirs.hbm.xml file

 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <!-- Generated 12 Dec, 2014 1:32:06 PM by Hibernate Tools 4.3.1 --> <hibernate-mapping> <class name="defaultpackage.Sirs" table="sirs" catalog="sirsdb" optimistic-lock="version"> <id name="sirsid" type="int"> <column name="SIRSID" /> <generator class="assigned" /> </id> <property name="sirsDescription" type="string"> <column name="`SIRS Description`" length="45" /> </property> <property name="submitter" type="string"> <column name="Submitter" length="45" /> </property> </class> </hibernate-mapping> 

hibernate.cfg.xml

 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/sirsdb? zeroDateTimeBehavior=convertToNull</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">root</property> <property name="show_sql">true</property> <property name="hibernate.hbm2ddl.auto">update</property> <mapping resource="defaultpackage/Sirs.hbm.xml"/> </session-factory> </hibernate-configuration> 

addirs.jsp code

 <%@page import="defaultpackage.Sirs"%> <!-- A jsp to insert record through hibernate --> <%@ page import="java.util.*,org.hibernate.*,org.hibernate.cfg.*, org.hibernate.boot.registry.StandardServiceRegistryBuilder, org.hibernate.service.ServiceRegistry, org.hibernate.SessionFactory" %> <%! int sirsid;String submitter;String sirsDescription; Session session1 = null; %> <body> <% String num1=request.getParameter("t1"); if(num1 != null) { out.println("<h1>Data</h1>"); sirsid=Integer.parseInt(num1); sirsDescription=request.getParameter("t2"); submitter=request.getParameter("t3"); try { Configuration conf = new Configuration().configure("hibernate.cfg.xml"); ServiceRegistry sr = new StandardServiceRegistryBuilder().applySettings(conf.getProperties()).build(); SessionFactory sf = conf.buildSessionFactory(sr); Session session1 = sf.openSession(); Sirs e=new Sirs(sirsid,sirsDescription,submitter); Transaction transaction = session1.beginTransaction(); session1.save(e); //session1.flush(); transaction.commit(); session1.close(); out.println("<h1>Data Inserted Successfully</h1>"); } catch(Exception e) { System.out.println("e="+e.getMessage()); } } %> <form> <table width="352" border="1"> <tr> <th>SIRS ID</th> <td><input name="t1" type="text"></td> </tr> <tr> <th> Description </th> <td><input name="t2" type="text"></td> </tr> <tr> <th> Submitter </th> <td><input name="t3" type="text"></td> </tr> <tr> <th colspan="2"><input type="submit"value="Submit" > </th> </tr> </table> </form> </body> </html> 

Web.xml file

 <?xml version="1.0" encoding="UTF-8"?> <web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web- app_3_1.xsd"> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>*.htm</url-pattern> </servlet-mapping> <session-config> <session-timeout> 30 </session-timeout> </session-config> <welcome-file-list> <welcome-file>redirect.jsp</welcome-file> </welcome-file-list> </web-app> 

Glassfish Server Window

 Info: Hibernate: insert into sirsdb.sirs (`SIRS Description`, Submitter, SIRSID) values (?, ?, ?) WARN: SQL Error: 1205, SQLState: 41000 ERROR: Lock wait timeout exceeded; try restarting transaction Info: HHH000010: On release of batch it still contained JDBC statements Info: e=could not execute statement 

Please, help!

+6
source share
1 answer
  • Can you verify that your previous instance of your application is still running, or that the database viewer is open and in the middle of a transaction? Opening a terminal for viewing and working with the same table may be the main reason . You can also run show full processlist at the mysql command line. They usually show you the full sql for a query that blocks.

  • If this does not help, make sure the mysql services have been restarted after the timeout update.

  • Use the sleep pool for connections with a maximum pool size of 10. Here is an example on how to do this.

+10
source

Source: https://habr.com/ru/post/979908/


All Articles