【问题标题】:insert into hibernate_sequence values ( 1 )" via JDBC Statement: org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "通过 JDBC 语句插入 hibernate_sequence 值(1)”:org.hibernate.tool.schema.spi.CommandAcceptanceException:执行 DDL 时出错“
【发布时间】:2019-05-23 11:57:20
【问题描述】:

wildfly 版本:wildfly-15 休眠版本:Hibernate-5

  <datasource jndi-name="java:jboss/datasources/MySqlDS" pool-name="MySqlDS" spy="true" tracking="true" enlistment-trace="true" statistics-enabled="true">
                    <connection-url>jdbc:mysql://localhost:3306/sample</connection-url>
                    <driver-class>com.mysql.cj.jdbc.Driver</driver-class>
                    <datasource-class>com.mysql.cj.jdbc.MysqlDataSource</datasource-class>
                    <connection-property name="useSSL">
                        false
                    </connection-property>
                    <connection-property name="characterEncoding">
                        UTF-8
                    </connection-property>
                    <connection-property name="serverTimezone">
                        GMT+8
                    </connection-property>
                    <driver>mysql</driver>
                    <security>
                        <user-name>sample</user-name>
                        <password>sample</password>
                    </security>
                    <validation>
                        <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
                        <background-validation>true</background-validation>
                        <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
                    </validation>
                    <statement>
                        <share-prepared-statements>true</share-prepared-statements>
                    </statement>
                </datasource>

实体:

@Entity
@Table(schema = "sample", name="person")
@Data
public class Person implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * primary key and increment strategy
     */
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Integer personId;

    /**
     * Field Constraint: no-null、length=32
     */
    @Column(nullable=false,length=32)
    private String name;

    @Column(nullable=false)
    private Integer age;

    @Temporal(value=TemporalType.DATE)
    private Date birthday;
}

persitence.xml:

    <persistence-unit name="persistenceUnit">
     <jta-data-source>java:jboss/datasources/MySqlDS</jta-data-source>
     <properties>
         <property name="hibernate.show_sql" value="true" />
         <property name="hibernate.format_sql" value="true"/>
         <property name="hibernate.hbm2ddl.auto" value="update"/>
         <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL8Dialect"/>
     </properties>
</persistence-unit>

错误信息:

18:25:26,417 WARN  [org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl] (ServerService Thread Pool -- 11) GenerationTarget encountered exception accepting command : Error executing DDL "
    insert into hibernate_sequence values ( 1 )" via JDBC Statement: org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "
    insert into hibernate_sequence values ( 1 )" via JDBC Statement
    at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:67)
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlString(AbstractSchemaMigrator.java:559)
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlStrings(AbstractSchemaMigrator.java:504)
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.createTable(AbstractSchemaMigrator.java:277)
    at org.hibernate.tool.schema.internal.GroupedSchemaMigratorImpl.performTablesMigration(GroupedSchemaMigratorImpl.java:71)
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.performMigration(AbstractSchemaMigrator.java:207)
    at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.doMigration(AbstractSchemaMigrator.java:114)
    at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:183)
    at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:72)
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:310)
    at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:467)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:939)
    at org.jboss.as.jpa.hibernate5.TwoPhaseBootstrapImpl.build(TwoPhaseBootstrapImpl.java:44)
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:170)
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:128)
    at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:649)
    at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:212)
    at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
    at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1985)
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1487)
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1378)
    at java.lang.Thread.run(Thread.java:748)
    at org.jboss.threads.JBossThread.run(JBossThread.java:485)
Caused by: java.sql.SQLException: No database selected

问题: 当我配置wildfly mysql数据源时,当我登录wildfly管理web ui时,我可以成功测试数据源,但是当我用jpa configure将ejb项目打包成jar时,出现错误信息,我该如何解决?谢谢

【问题讨论】:

  • 你能显示你的休眠配置吗?请不要将图像与代码链接。相反,请将您的代码粘贴到问题中。
  • 感谢您的旅游建议。我调整它。请再看一遍。

标签: hibernate jpa wildfly datasource mysql-8.0


【解决方案1】:

从您附加的屏幕截图中可以清楚地看出错误是

没有选择数据库

显然,当您的应用程序不知道要使用什么数据库时,就会发生这种情况。要解决此问题,您应该从以下位置更改数据库驱动程序 URL:

"URL"="jdbc:mysql://localhost:3306/" 

"URL"="jdbc:mysql://localhost:3306/databasename"

所以检查您的数据库配置文件并添加数据库名称,如下所示。

更多信息请查看this

并避免使用图像,而是使用代码。

【讨论】:

  • 但是,我已经配置了整个数据库的连接url:jdbc:mysql://localhost:3306/sample,“sample”是我的目标数据库,我是 jpa 的新手,是否存在任何错误 persistence.xml ?
  • 是的,与休眠配置文件有关的东西
  • 你能给我一个persistence.XML的例子吗? mysql 8.0版
  • github 示例显示事务类型为“RESOURCE_LOCAL”,但是,我想使用默认事务类型“JTA”来管理数据源,它不适合我
猜你喜欢
  • 2017-10-20
  • 1970-01-01
  • 2019-03-26
  • 2020-04-27
  • 2022-09-29
  • 1970-01-01
  • 2019-04-09
  • 2017-08-28
  • 1970-01-01
相关资源
最近更新 更多