wake-up-neo.net

JPA EntityManager konnte nicht für die Transaktion geöffnet werden. Die verschachtelte Ausnahme ist javax.persistence.PersistenceException

wenn ich meinen Code laufe, erhalte ich diese Ausnahme:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
    at Sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at Sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.Java:62)
    at Sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.Java:45)
    at Java.lang.reflect.Constructor.newInstance(Constructor.Java:422)
    at com.mysql.jdbc.Util.handleNewInstance(Util.Java:411)
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.Java:1121)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.Java:357)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.Java:2482)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.Java:2519)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.Java:2304)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.Java:834)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.Java:47)
    at Sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at Sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.Java:62)
    at Sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.Java:45)
    at Java.lang.reflect.Constructor.newInstance(Constructor.Java:422)
    at com.mysql.jdbc.Util.handleNewInstance(Util.Java:411)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.Java:416)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.Java:346)
    at Java.sql.DriverManager.getConnection(DriverManager.Java:664)
    at Java.sql.DriverManager.getConnection(DriverManager.Java:208)
    at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.Java:153)
    at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriver(DriverManagerDataSource.Java:144)
    at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnectionFromDriver(AbstractDriverBasedDataSource.Java:155)
    at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnection(AbstractDriverBasedDataSource.Java:120)
    at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.Java:139)
    at org.hibernate.tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.prepare(SuppliedConnectionProviderConnectionHelper.Java:51)
    at org.hibernate.tool.hbm2ddl.DatabaseExporter.<init>(DatabaseExporter.Java:52)
    at org.hibernate.tool.hbm2ddl.SchemaExport.execute(SchemaExport.Java:367)
    at org.hibernate.tool.hbm2ddl.SchemaExport.create(SchemaExport.Java:304)
    at org.hibernate.tool.hbm2ddl.SchemaExport.create(SchemaExport.Java:293)
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.Java:517)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.Java:1857)
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
Aug 25, 2015 8:23:45 PM com.Sun.jersey.spi.container.ContainerResponse mapMappableContainerException
SCHWERWIEGEND: The RuntimeException could not be mapped to a response, re-throwing to the HTTP container
org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.JDBCConnectionException: Could not open connection
    at org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.Java:431)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.Java:373)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.Java:457)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.Java:276)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.Java:96)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.Java:179)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.Java:207)
    at com.Sun.proxy.$Proxy76.create(Unknown Source)

Ich weiß nicht wo das Problem ist. Aber gestern habe ich gut gearbeitet.

meine Datenbank.Eigenschaften:

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/streaming
jdbc.username=root
jdbc.password=password

hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.showsql=true
hibernate.hbm2ddl.auto=create

Es ist mir möglich, mysql direkt von der Kommandozeile aus auszuführen. Wo ist das Problem? War falsch Ich benutze Spring 4 und verwende den Ruhezustand mit Mysql als Datenbanksprache.

Hat jemand Ideen?

Danken.

5
emoleumassi

Es gibt CommunicationsException: Kommunikationsverbindungsfehler.

Wenn Sie eine SQLException erhalten: Verbindung abgelehnt oder Verbindungszeitüberschreitung oder MySQL-spezifisch

CommunicationsException: Communications link failure

dann bedeutet das, dass die DB überhaupt nicht erreichbar ist. Dies kann eine oder mehrere der folgenden Ursachen haben:

  • Die IP-Adresse oder der Hostname in der JDBC-URL ist falsch.
  • Der Hostname in der JDBC-URL wird vom lokalen DNS-Server nicht erkannt.
  • Die Portnummer fehlt oder ist in der JDBC-URL falsch.
  • DB-Server ist inaktiv.
  • Der DB-Server akzeptiert keine TCP/IP-Verbindungen.
  • Der DB-Server hat keine Verbindungen mehr.
  • Zwischen Java und DB werden Verbindungen blockiert, z. eine Firewall oder einen Proxy. 

Um das eine oder das andere zu lösen, befolgen Sie die folgenden Hinweise:

  • Überprüfen und testen Sie sie mit Ping.
  • Aktualisieren Sie DNS oder verwenden Sie stattdessen die IP-Adresse in der JDBC-URL.
  • Überprüfen Sie es basierend auf my.cnf von MySQL DB.
  • Starten Sie die DB.
  • Überprüfen Sie, ob mysqld ohne die Option --skip-networking gestartet wird.
  • Starten Sie die Datenbank neu und korrigieren Sie den Code entsprechend, sodass die Verbindungen endgültig geschlossen werden.
  • Deaktivieren Sie die Firewall und/oder konfigurieren Sie die Firewall/den Proxy, um den Port zuzulassen/weiterzuleiten. 

Quelle: Weitere Details

2
Amit Tamrakar

DB ist ausgefallen ..__ Sie müssen zuerst den DB-Server starten und die Konnektivität entweder mit dem Befehlszeilenclient telnet oder mysql überprüfen.

0
ACV

Ich konnte die genaue Ursache nicht herausfinden, stellte jedoch fest, dass es an einigen Thread-Pools lag, da ich mithilfe des Terminals eine Verbindung zur Datenbank herstellen konnte. 

psql -h hostname -U username -d database

der Neustart des Servers hat also für mich funktioniert.

0
RAX