米兰的小铁匠z 2020-02-04 21:14 采纳率: 25%
浏览 889

idea爆出org.hibernate.tool.schema.spi.CommandAcceptanceException不知道怎么解决

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "create table hibernate_sequence (next_val bigint) engine=InnoDB" 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:184)

    at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:73)

    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:320)

    at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:462)

    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1237)                                                                                     

    at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58)

    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365)

    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:391)

    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:378)

    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341)

    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1855)

    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1                         792)

    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:595)

    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517)

    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323)

    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)

    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321)

    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)

    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1108)

    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:868)

    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550)

    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)

    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747)

    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)

    at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)

    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)

    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215)

    at com.liuzeyu.BlogApplication.main(BlogApplication.java:12)

    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

    at java.lang.reflect.Method.invoke(Method.java:498)

    at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)

Caused by: java.sql.SQLSyntaxErrorException: Table 'blog.hibernate_sequence' doesn't exist



我是数据库挂了之后重新安装的MySQL 安装后连接正常,但是一启动spring boot就抛出这个异常

网上很多地方说修改hibernate.cfg.xml文件  但idea找不到这个文件,我的项目是SpringBoot+JPA+Thymeleaf
  • 写回答

1条回答 默认 最新

  • 大大怪打LZR 2023-08-13 21:50
    关注

    这个错误通常是由于 Hibernate 在启动时尝试创建数据库表格(DDL)时出现问题引起的。具体的错误信息是说 Table 'blog.hibernate_sequence' doesn't exist,表明在创建表格时找不到 'blog.hibernate_sequence' 这个表。

    在 Hibernate 中,hibernate_sequence 表用于生成实体对象的主键。由于你是使用 Spring Boot + JPA,通常情况下,Spring Boot 会自动为你管理这个序列表,你不需要手动操作。

    在新安装的 MySQL 中,如果之前创建的数据库表没有被正确的保留,或者它们的结构发生了变化,就可能导致 Hibernate 在启动时尝试创建表时出错。

    解决这个问题的步骤可以包括:

    1. 清空数据库并重新创建: 如果你的数据库中没有重要的数据,你可以尝试将数据库清空并重新启动应用。这样 Spring Boot 将会尝试重新创建所有的数据库表。

    2. 更新数据库结构: 如果你的数据库结构发生了变化,确保在 Spring Boot 的启动配置中没有设置 hibernate.hbm2ddl.auto 属性为 update,否则会尝试更新数据库表格结构,可能会出现问题。

    3. 检查数据库连接配置: 确保你的 application.propertiesapplication.yml 中的数据库连接配置正确,并且应用可以正确连接到数据库。

    4. 检查实体类定义: 检查你的 JPA 实体类定义,确保它们与数据库表结构相匹配。主要关注实体类的主键生成策略是否正确。

    5. 关闭 hibernate.hbm2ddl.auto: 在生产环境中,不建议使用 hibernate.hbm2ddl.auto 属性来自动创建或更新数据库表结构,因为这可能会导致数据丢失或不一致。你可以将这个属性设置为 none 或者完全移除,然后手动管理数据库表结构。

    需要注意的是,在生产环境中,建议使用数据库迁移工具(如 Flyway 或 Liquibase)来管理数据库结构的变化,以确保在更新数据库时能够保留现有数据和结构。

    评论

报告相同问题?

悬赏问题

  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办