如何解决异常:表 'DBNAME.hibernate_sequence' 不存在

Posted

技术标签:

【中文标题】如何解决异常:表 \'DBNAME.hibernate_sequence\' 不存在【英文标题】:How to resolve Exception: Table 'DBNAME.hibernate_sequence' doesn't exist如何解决异常:表 'DBNAME.hibernate_sequence' 不存在 【发布时间】:2021-11-07 16:59:52 【问题描述】:

This 回答无效。我仍然遇到同样的异常。

hibernate.cfg.xml

<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.mysqlDialect</property>

<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
  
<property name="hbm2ddl.auto">update</property>
   
<!-- Use Annotation-based mapping metadata -->
<mapping class="entity.Person"/>

这些是我的版本: pom.xml

<dependencies>
  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.26</version>
  </dependency>
  <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.5.6.Final</version>
  </dependency>
  <dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
  </dependency>
</dependencies>

主类

public static void main(String[] args) 
    // HibernateUtil below is my custom Session factory java code
    Session session = HibernateUtil.getSessionFactory().openSession(); 
    Transaction txn = session.getTransaction();
    try 
        txn.begin();
        Address address = new Address("200 E Main st", "Seattle", 211004);
        Person person = new Person("Tanzeel Mirza", address);
        
        session.save(person);
        txn.commit();
    
    catch(Exception e) 
        //roll back code
    
    finally 
        if(session!=null) 
            session.close();
        
    

Person.java

...
@Entity
@Table(name="person")
public class Person 
    
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO) //<----- tried IDENTITY also
    @Column(name="id")
    private long pid;
    
    @Column(nullable=false) 
    private String name;
    
    @Embedded
    private Address address;
    
    // getters and setters and constructor

Address.java

@Embeddable
public class Address 
    
    @Column(name="street")
    private String street;

    @Column(name="city")
    private String city;

    @Column(name="zipcode")
    private long zipcode;
    
    // constructors

这是完整的日志:

请指出我的错误。

【问题讨论】:

【参考方案1】:

我尝试了this 的答案。虽然它不是公认的答案,因为问题与我的完全不同,但它现在有效。

看起来问题是由于 MySQL 5.x 的 MySQL 版本冲突造成的。

所以,我应该在 hibernate.cfg.xml 中使用 MySQL5Dialect 而不是 MySQLDialect

解决方案:

<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>

就是这样!

【讨论】:

以上是关于如何解决异常:表 'DBNAME.hibernate_sequence' 不存在的主要内容,如果未能解决你的问题,请参考以下文章

如何解决空数据库表上的乐观并发异常错误

创建表时的休眠异常

ArcGIS错误异常100问之003:属性表中文乱码解决办法总结

EF生成模型出现异常:表“TableDetails“中列“IsPrimaryKey”的值为DBNull解决方法

[解决方法]Hibernate查询部分字段(含外键)出错,报空指针异常

JPA中的could not initialize proxy - no Session异常分析与解决