2012-03-19 3 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 = create Предполагается заменить таблицу, если она уже существует? Почему я должен получать эту ошибку?

Кстати, на прошлой неделе это работало так, как ожидалось, поэтому я действительно смущен тем, почему я внезапно получаю эту ошибку.

+0

Что изменилось? Вещи не магически перестают работать. Была ли изменена учетная запись, под которой работает Hibernate? – atrain

+0

@AaronSheffey Я не могу думать ни о чем, что изменилось. Учетные лица для подключения к базе данных не изменились, а также единица сохранения. Я просто вручную удалил и воссоздал схему, и теперь она работает снова, как ожидалось, но я все еще хочу знать, что произошло, потому что это произошло раньше, и тот факт, что мне приходится вручную отбрасывать и воссоздавать схему от времени до время должно быть симптомом более глубокой проблемы. –

+0

Почему бы не использовать create-drop? – StasKolodyuk

ответ

0

Я закончил вручную запись и выполнение операторов SQL, чтобы удалить и воссоздать схему, а затем она снова работала, как ожидалось. Я никогда не понимал, почему Hibernate не будет падать и воссоздавать существующие таблицы, и с тех пор это не повторилось.

0

Эта ошибка смущает меня в первый раз. Но решение довольно простое. Просто изменить в hibernate.cfg.xml этот вариант:

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

к

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

Я не хотел обновлять схему, я хотел создать ее заново с каждой сборкой. Таким образом, этот ответ не затрагивает мою проблему. –

Смежные вопросы