如何解决异常:表 '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解决方法