2016-08-23 322 views
0

這應該是一件容易的事。我正在使用Eclipselink在JPA中編寫玩具應用程序,而不是使用SSL。當實體經理被調用時,我會在下面得到消息。我猜我在我的persistence.xml文件中缺少一個參數,但是這個異常不是很具體。內部異常:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:未知錯誤1049

[EL Info]: 2016-08-23 13:28:04.574--ServerSession(1586463432)--EclipseLink, version: Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd 
    Tue Aug 23 13:28:05 EDT 2016 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification. 
... 
    Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown error 1049 
    Error Code: 1049 
@ em= Error message: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.DatabaseException 
    Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown error 1049 
    Error Code: 1049 
    javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.DatabaseException 
    Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown error 1049 
    Error Code: 1049 
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:766) 
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getAbstractSession(EntityManagerFactoryDelegate.java:204) 
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:304) 
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:336) 
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:302) 
    at com.ruleagents.hero.Main.main(Main.java:48) 
    Caused by: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.DatabaseException 
    Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown error 1049 
    Error Code: 1049 
    at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:331) 
    at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:326) 
    at org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java:138) 
    at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162) 
    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.setOrDetectDatasource(DatabaseSessionImpl.java:204) 
    at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:741) 
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:239) 
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:685) 
    ... 5 more 
... 
    Exception in thread "main" java.lang.NullPointerException 
    at com.ruleagents.hero.Main.main(Main.java:62) 

這是persistence.xml中

<persistence version="2.1" 
xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> 
<persistence-unit name="CharacterManager" 
    transaction-type="RESOURCE_LOCAL"> 
    <provider> 
     org.eclipse.persistence.jpa.PersistenceProvider 
    </provider> 
    <class>com.ruleagents.hero.Hero</class> 
    <class>com.ruleagents.hero.Logon</class> 
    <!-- class>com.ruleagents.hero.Stat</class --> 
    <properties> 
     <property name="javax.persistence.jdbc.driver" value='com.mysql.jdbc.Driver' /> 
     <property name="javax.persistence.jdbc.url" 
      value="jdbc:mysql://localhost:3306/CharacterManager" /> 
     <property name="javax.persistence.jdbc.user" value="root" /> 
     <property name="eclipselink.ddl-generation" value="drop-and-create-tables" /> 
     <property name="eclipselink.ddl-generation.output-mode" value="database" /> 
     <property name="useSSL" value="false" /> 
     <property name="javax.persistence.jdbc.user" value="root"/> 
    </properties> 
</persistence-unit> 
</persistence> 

,這是它怎麼叫:

public static EntityManagerFactory getEMF(){ 
    try { 
     if (emf == null){ 
      emf = Persistence.createEntityManagerFactory("CharacterManager"); 
... 
EntityManager em = null; 
try { 
    em = getEMF().createEntityManager(); 
    em.getTransaction().begin(); 
    em.persist(user); 

什麼我需要改變,以獲得此連接到MySQL?謝謝!

+0

根據https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-configuration-properties.html利用UseSSL默認爲true MySQL 5.5.45+。嘗試指定false - 請參閱鏈接以瞭解如何向您的URL添加屬性 – Chris

回答

相關問題