2012-03-19 23 views
3

我使用hibernate.hbm2ddl.auto =创建不清理掉现有的数据

<property name="hibernate.hbm2ddl.auto" value="create" /> 

在我的persistence.xml我的集成测试,当我运行集成测试,我得到

ERROR SchemaExport:386 - Unsuccessful: create table tableName ... 
ERROR SchemaExport:387 - Table 'tableName' already exists 

但不是hbm2ddl.auto =创建应该替换表,如果它已经存在?为什么我会得到这个错误?

顺便说一句,这是上周的预期,所以我很困惑,为什么我会突然得到这个错误。

+0

改变了什么?事情不会神奇地停止工作。 Hibernate运行的帐户是否发生变化? – atrain 2012-03-19 17:36:17

+0

@AaronSheffey我想不出任何改变。连接到数据库的凭证没有改变,持久性单元也没有改变。我刚刚手动删除并重新创建了模式,现在它再次按预期工作,但我仍然想知道发生了什么,因为这发生过一次,而且我必须手动删除并重新创建模式时间必须是一个更深层次问题的症状。 – 2012-03-19 19:01:54

+0

为什么不使用创建 - 删除? – StasKolodyuk 2015-10-27 14:40:37

回答

0

我最终手动编写并执行SQL语句以删除并重新创建架构,然后再次按预期工作。我从来没有弄清楚为什么Hibernate不会删除并重新创建现有的表,并且从那以后再也没有发生过。

0

这个错误让我第一次迷惑。但解决方案非常简单。就在你的hibernate.cfg.xml更改此选项:

<property name="hibernate.hbm2ddl.auto" value="create"/> 

<property name="hibernate.hbm2ddl.auto" value="update"/> 
+1

我不想更新模式,我想在每次构建时重新创建它。所以,这个答案没有解决我的问题。 – 2013-02-25 16:14:03