Java – generationtarget encountered an exception to accept the command: error executing DDL through JDBC statement
I'm a novice in the hibernate world. In the face of,
WARN: GenerationTarget encountered exception accepting command : Error executing DDL via JDBC Statement org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL via JDBC Statement
I'm in Hibernate 5.2 An exception occurred while running my standalone program in version 9 But in Hibernate 4, my code works well I looked for many problems and solved them, but I didn't get the answers
hibernate.cfg.xml <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/test</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">admin</property> <property name="hibernate.connection.pool_size">20</property> <property name="hibernate.show_sql">true</property> <property name="hibernate.hbm2ddl.auto">create</property> <mapping class="com.test.hibernate14417.MyTable"></mapping> </session-factory> </hibernate-configuration>
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.test</groupId> <artifactId>Hibernate14417</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <repositories> </repositories> <dependencies> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.2.9.Final</version> </dependency> <dependency> <groupId>org.hibernate.javax.persistence</groupId> <artifactId>hibernate-jpa-2.1-api</artifactId> <version>1.0.0.Final</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>4.3.1.Final</version> </dependency> <dependency> <groupId>net.sourceforge.jtds</groupId> <artifactId>jtds</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>MysqL</groupId> <artifactId>mysql-connector-java</artifactId> <version>3.1.11</version> </dependency> </dependencies> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> </project>
package com.test.hibernate14417; import org.hibernate.SessionFactory; import org.hibernate.boot.Metadata; import org.hibernate.boot.MetadataSources; import org.hibernate.boot.registry.StandardServiceRegistry; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.service.ServiceRegistry; public class ExecuteUtil { private static final SessionFactory SESSION_FACTORY=buildSessionFactory(); private static SessionFactory buildSessionFactory() { try { ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() .configure("hibernate.cfg.xml").build(); Metadata Metadata = new MetadataSources(serviceRegistry).buildMetadata(); return Metadata.getSessionFactoryBuilder().build(); } catch (Throwable ex) { System.err.println("Initial SessionFactory creation Failed." + ex); throw new ExceptionInInitializerError(ex); } } public static SessionFactory getSESSION_FACTORY() { return SESSION_FACTORY; } public static void shutdown(){ getSESSION_FACTORY().close(); } }
package com.test.hibernate14417; import java.io.Serializable; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity public class MyTable implements Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO) private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
package com.test.hibernate14417; import org.hibernate.Session; import org.hibernate.SessionFactory; public class Main { public static void main(String[] args) { MyTable mt=new MyTable(); mt.setName("Man"); SessionFactory sessionFactory=ExecuteUtil.getSESSION_FACTORY(); Session session=sessionFactory.getCurrentSession(); try { session.getTransaction().begin(); session.save(mt); session.getTransaction().commit(); session.close(); sessionFactory.close(); } catch (Exception e) { System.out.println(e.getStackTrace()); session.getTransaction().rollback(); } }
cd D:\Netbeans\Hibernate14417; "JAVA_HOME=C:\\Program Files\\Java\\jdk1.8.0_121" cmd /c "\"\"C:\\Program Files\\NetBeans 8.2\\java\\maven\\bin\\mvn.bat\" -Dexec.args=\"-classpath %classpath com.test.hibernate14417.Main\" -Dexec.executable=\"C:\\Program Files\\Java\\jdk1.8.0_121\\bin\\java.exe\" -Dmaven.ext.class.path=\"C:\\Program Files\\NetBeans 8.2\\java\\maven-nblib\\netbeans-eventspy.jar\" -Dfile.encoding=UTF-8 org.codehaus.mojo:exec-maven-plugin:1.2.1:exec\"" Running NetBeans Compile On Save execution. Phase execution is skipped and output directories of dependency projects (with Compile on Save turned on) will be used instead of their jar artifacts. Scanning for projects... ------------------------------------------------------------------------ Building Hibernate14417 1.0-SNAPSHOT ------------------------------------------------------------------------ --- exec-maven-plugin:1.2.1:exec (default-cli) @ Hibernate14417 --- Apr 14,2017 10:41:51 AM org.hibernate.Version logVersion INFO: HHH000412: Hibernate Core {5.2.9.Final} Apr 14,2017 10:41:51 AM org.hibernate.cfg.Environment <clinit> INFO: HHH000206: hibernate.properties not found Apr 14,2017 10:41:53 AM org.hibernate.boot.jaxb.internal.stax.LocalXmlResourceResolver resolveEntity WARN: HHH90000012: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/hibernate-configuration. Use namespace http://www.hibernate.org/dtd/hibernate-configuration instead. Support for obsolete DTD/XSD namespaces may be removed at any time. Apr 14,2017 10:41:54 AM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit> INFO: HCANN000001: Hibernate Commons Annotations {5.0.1.Final} Apr 14,2017 10:41:54 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!) Apr 14,2017 10:41:54 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH10001005: using driver [com.MysqL.jdbc.Driver] at URL [jdbc:MysqL://localhost:3306/test] Apr 14,2017 10:41:54 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH10001001: Connection properties: {user=root,password=****} Apr 14,2017 10:41:54 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO: HHH10001003: Autocommit mode: false Apr 14,2017 10:41:54 AM org.hibernate.engine.jdbc.connections.internal.PooledConnections <init> INFO: HHH000115: Hibernate connection pool size: 20 (min=1) Apr 14,2017 10:41:55 AM org.hibernate.dialect.Dialect <init> INFO: HHH000400: Using dialect: org.hibernate.dialect.MysqLDialect Apr 14,2017 10:41:55 AM org.hibernate.engine.jdbc.env.internal.LobCreatorBuilderImpl useContextualLobCreation INFO: HHH000423: Disabling contextual LOB creation as JDBC driver reported JDBC version [3] less than 4 Hibernate: drop table if exists hibernate_sequence Apr 14,2017 10:41:58 AM org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@24111ef1] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode. Hibernate: drop table if exists MyTable Hibernate: create table hibernate_sequence (next_val bigint) type=MyISAM Apr 14,2017 10:41:58 AM org.hibernate.resource.transaction.backend.jdbc.internal.DdlTransactionIsolatorNonJtaImpl getIsolatedConnection INFO: HHH10001501: Connection obtained from JdbcConnectionAccess [org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@531f4093] for (non-JTA) DDL execution was not in auto-commit mode; the Connection 'local transaction' will be committed and the Connection will be set into auto-commit mode. Apr 14,2017 10:41:58 AM org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException WARN: GenerationTarget encountered exception accepting command : Error executing DDL via JDBC Statement org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL via JDBC Statement at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:67) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applysqlString(SchemaCreatorImpl.java:440) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applysqlStrings(SchemaCreatorImpl.java:424) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata(SchemaCreatorImpl.java:315) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation(SchemaCreatorImpl.java:166) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:135) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:121) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:155) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:72) at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:309) at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:445) at com.test.hibernate14417.ExecuteUtil.buildSessionFactory(ExecuteUtil.java:29) at com.test.hibernate14417.ExecuteUtil.<clinit>(ExecuteUtil.java:20) at com.test.hibernate14417.Main.main(Main.java:21) Caused by: java.sql.sqlException: You have an error in your sql Syntax; check the manual that corresponds to your MysqL server version for the right Syntax to use near 'type=MyISAM' at line 1 at com.MysqL.jdbc.MysqLIO.checkErrorPacket(MysqLIO.java:2926) at com.MysqL.jdbc.MysqLIO.sendCommand(MysqLIO.java:1571) at com.MysqL.jdbc.MysqLIO.sqlQueryDirect(MysqLIO.java:1666) at com.MysqL.jdbc.Connection.execsql(Connection.java:2972) at com.MysqL.jdbc.Connection.execsql(Connection.java:2902) at com.MysqL.jdbc.Statement.execute(Statement.java:529) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54) ... 13 more Hibernate: insert into hibernate_sequence values ( 1 ) Apr 14,2017 10:41:58 AM org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException WARN: GenerationTarget encountered exception accepting command : Error executing DDL via JDBC Statement org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL via JDBC Statement at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:67) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applysqlString(SchemaCreatorImpl.java:440) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applysqlStrings(SchemaCreatorImpl.java:424) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata(SchemaCreatorImpl.java:315) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation(SchemaCreatorImpl.java:166) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:135) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:121) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:155) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:72) at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:309) at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:445) at com.test.hibernate14417.ExecuteUtil.buildSessionFactory(ExecuteUtil.java:29) at com.test.hibernate14417.ExecuteUtil.<clinit>(ExecuteUtil.java:20) at com.test.hibernate14417.Main.main(Main.java:21) Caused by: java.sql.sqlException: Table 'test.hibernate_sequence' doesn't exist at com.MysqL.jdbc.MysqLIO.checkErrorPacket(MysqLIO.java:2926) at com.MysqL.jdbc.MysqLIO.sendCommand(MysqLIO.java:1571) at com.MysqL.jdbc.MysqLIO.sqlQueryDirect(MysqLIO.java:1666) at com.MysqL.jdbc.Connection.execsql(Connection.java:2972) at com.MysqL.jdbc.Connection.execsql(Connection.java:2902) at com.MysqL.jdbc.Statement.execute(Statement.java:529) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54) ... 13 more Hibernate: create table MyTable (id integer not null,name varchar(255),primary key (id)) type=MyISAM Apr 14,2017 10:41:58 AM org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl handleException WARN: GenerationTarget encountered exception accepting command : Error executing DDL via JDBC Statement org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL via JDBC Statement at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:67) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applysqlString(SchemaCreatorImpl.java:440) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applysqlStrings(SchemaCreatorImpl.java:424) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata(SchemaCreatorImpl.java:315) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation(SchemaCreatorImpl.java:166) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:135) at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:121) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:155) at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:72) at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:309) at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:445) at com.test.hibernate14417.ExecuteUtil.buildSessionFactory(ExecuteUtil.java:29) at com.test.hibernate14417.ExecuteUtil.<clinit>(ExecuteUtil.java:20) at com.test.hibernate14417.Main.main(Main.java:21) Caused by: java.sql.sqlException: You have an error in your sql Syntax; check the manual that corresponds to your MysqL server version for the right Syntax to use near 'type=MyISAM' at line 1 at com.MysqL.jdbc.MysqLIO.checkErrorPacket(MysqLIO.java:2926) at com.MysqL.jdbc.MysqLIO.sendCommand(MysqLIO.java:1571) at com.MysqL.jdbc.MysqLIO.sqlQueryDirect(MysqLIO.java:1666) at com.MysqL.jdbc.Connection.execsql(Connection.java:2972) at com.MysqL.jdbc.Connection.execsql(Connection.java:2902) at com.MysqL.jdbc.Statement.execute(Statement.java:529) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54) ... 13 more Apr 14,2017 10:41:58 AM org.hibernate.tool.schema.internal.SchemaCreatorImpl applyImportSources INFO: HHH000476: Executing import script 'org.hibernate.tool.schema.internal.exec.ScriptSourceInputNonExistentImpl@7776ab' Exception in thread "main" org.hibernate.HibernateException: No CurrentSessionContext configured! at org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:454) at com.test.hibernate14417.Main.main(Main.java:23)
Solution
You should try to use different dialects, such as org. Org hibernate. dialect. Mysql5dialect or org hibernate. dialect. Mysqlmyisamdialect or org hibernate. dialect. Mysqlinnodbdialect to see which dialect is right for you
To sum up, your current dialect is being generated, type = MyISAM, but should be engine = MyISAM in the create table query
mysql error ‘TYPE=MyISAM’
Why do I need to configure the SQL dialect of a data source?
Your log says that this query is an attempt to execute. Create a table mytable (ID integer not null, primary key (ID)) type = MyISAM, so you should try to execute the query directly at the MySQL command prompt to see if it is applicable to your version of MySQL
In addition, if there is a problem, please specify your version of MySQL
Hope to help you!!