2016-08-23 21 views
0

Это должно быть легко. Я пишу приложение для игрушек в JPA с Eclipselink и не использую 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 по умолчанию истинна на MySQL 5.5.45+. Попробуйте указать false - см. Ссылку о том, как добавить свойства в ваш URL. – Chris

ответ

Смежные вопросы