Mysql
 sql >> Baza danych >  >> RDS >> Mysql

WARN SqlExceptionHelper:143 — Błąd SQL:0, SQLState:08S01 — SqlExceptionHelper:144 — Awaria łącza komunikacyjnego

Problem pojawiał się z powodu małej wartości time_out zmienna na serwerze MySQL.

W mojej sytuacji time_out została ustawiona na 1 minutę.Za pomocą C3PO mechanizm poolingu możemy zoptymalizować JDBC .

Pobierz c3p0 -> http://sourceforge.net/projects/c3p0/

Używam hibernacji 3.0 .

hibernacja.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="connection.driver_class">com.mysql.jdbc.Driver</property>
          <property name="connection.url">jdbc:mysql://databasehost:3306/databasename</property>
          <property name="connection.username">user</property>
          <property name="connection.password">psw</property>
          <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
          <property name="hibernate.hbm2ddl.auto">update</property>
         
          <property name="show_sql">false</property>
         
       <!-- Hibernate c3p0 settings-->
        <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
        <property name="hibernate.c3p0.acquire_increment">3</property>
        <property name="hibernate.c3p0.idle_test_period">10</property>
        <property name="hibernate.c3p0.min_size">5</property>
        <property name="hibernate.c3p0.max_size">75</property>
        <property name="hibernate.c3p0.max_statements">10</property>
        <property name="hibernate.c3p0.timeout">50</property>
        <property name="hibernate.c3p0.preferredTestQuery">select 1</property>
        <property name="hibernate.c3p0.testConnectionOnCheckout">true</property>
          
         <!-- Mapping files -->
        <mapping class="xxx.xxx.xxx.xxx" />
        <mapping class="xxx.xxx.xxx.xxx" />
        <mapping class="xxx.xxx.xxx.xxx" />
        <mapping class="xxx.xxx.xxx.xxx" />
        
       
    </session-factory>
</hibernate-configuration> 

PersistenceManager.java

import java.io.PrintStream;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;

public class PersistenceManager
{
  private static SessionFactory sessionFactory = null;

  private static PersistenceManager singleton = null;

  public static PersistenceManager getInstance()
  {
    if (singleton == null)
    {
      singleton = new PersistenceManager();
    }

    return singleton;
  }

  public SessionFactory getSessionFactory()
  {
    if (sessionFactory == null)
      createSessionFactory();
    return sessionFactory;
  }

  protected void createSessionFactory()
  {    
    sessionFactory = new AnnotationConfiguration().configure()
      .buildSessionFactory();
  }

  public void destroySessionFactory()
  {
    if (sessionFactory != null)
    {
      sessionFactory.close();
      sessionFactory = null;
    }
  }
}

Przykład 1:

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;

public Users Login( String username,  String password)
  {
    Session session = null;
    try
    {
      String hql = "select u from Users u where u.username like :p1 and u.password like :p2";
      session = PersistenceManager.getInstance().getSessionFactory().openSession();

      Query q = session.createQuery(hql)
        .setParameter("p1", username)
        .setParameter("p2", password);

      if (q.list().size() == 0)
      {
        session.close();
        return new Users();
      }

      Users user = (Users)q.list().get(0);
      session.close();
      return user;
    }
    catch (Exception e)
    {
      session.close();
     
    }
  }

Przykład 2:

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
 public String Registration(Users u) { 

    Session session = null;
    try
    {
      String hql = "select u from Users u where u.username like :p1";

      session = PersistenceManager.getInstance().getSessionFactory().openSession();

      Query q = session.createQuery(hql).setParameter("p1", u.getUsername());

      if (q.list().size() == 0)
      {
        session.beginTransaction();
        session.persist(u);
        session.getTransaction().commit();
        session.close();
        return new Boolean(true).toString();
      }

      session.close();

      return new Boolean(false).toString();
    }
    catch (Exception e)
    {
      return e.toString();
    }
  }


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Wybierz DISTINCT wiele kolumn na podstawie unikalności jednego wiersza?

  2. mysqli_stmt::bind_param() [mysqli-stmt.bind-param]:Liczba zmiennych nie odpowiada liczbie parametrów

  3. Dynamiczne wybieranie kolumny w MySQL

  4. MySQL Visual Studio 2015 Masz już użyteczne połączenie

  5. zwróć mysql wartość logiczną „tak” lub „nie”