2009-12-18 4 views
1

Мне нужно выполнить тот же db-журнал изменений муравей, а затем весной. Я надеюсь, что муравей запустит журнал изменений, и когда весна запустится, он ничего не сделает и просто остановится нормально. Ant запускает db-changelog успешно, а затем работает пружиной, но он выдает исключение, часть трассировки стека:Неисправность липибазы с другим агентом

Причина: Liquibase.exception.JDBCException: Ошибка выполнения SQL CREATE TABLE action (action_id int8 NOT NULL, имя_действия VARCHAR (255), version_no int8, reason_required BOOLEAN, comment_required BOOLEAN, step_id int8, CONSTRAINT action_pkey PRIMARY KEY (action_id)): Вызвано: Ошибка выполнения SQL CREATE TABLE action (action_id int8 NOT NULL, имя_действия VARCHAR (255), version_no int8, reason_required BOOLEAN, comment_required BOOLEAN, step_id int8, CONSTRAINT action_pkey ПЕРВИЧНЫЙ КЛЮЧ (action_id)): Вызвано: ERROR: отношение «действие» уже существует; вложенное исключение - org.springframework.beans.factory.BeanCreationException ....

Любая помощь будет очень признательна.

С уважением,

ответ

2

Это звучит, как он пытается запустить изменения снова. Каждый changeSet в changeLog идентифицируется комбинацией идентификатора, автора и пути/имени журнала изменений. Если вы запустите «select * from databasechangelog», вы можете увидеть используемые значения.

Возможно, проблема заключается в том, что вы ссылаетесь на файл изменений, отличный от муравья и весны, поэтому генерируете разные значения имени файла. Обычно вы хотите включить их в путь к классам, независимо от того, где и как вы их запускаете, у них есть один и тот же путь (например, «com/example/db.changelog.xml»)

+0

Спасибо, Натан, Это действительно проблема. Но я изменил реализацию, чтобы запустить журнал изменений весной, чтобы избежать дальнейших головных болей: D. –

0

Я столкнулся с этой проблемой и был можно исправить, изменив столбец имени файла DATABASECHANGELOG, чтобы указать путь ресурса ресурса. В моем случае я использовал ServletContextResource в каталоге WEB-INF:

update DATABASECHANGELOG set FILENAME = 'WEB-INF/path/to/changelog.xml' where FILENAME = 'changelog.xml' 
Смежные вопросы