2012-05-12 1 views
9

dbm-gorm-diff (예를 들어, 스프링 시큐리티 페이스 북 플러그인을 설치 한 후) 나는 같은 문제를 받고있다 :Grails의 데이터베이스 마이그레이션 플러그인 문제는 내가 <a href="http://grails.org/plugin/database-migration">Grails Database Migration Plugin</a>를 사용하고 실행

Error: Error executing SQL CREATE INDEX `FK609FD5A460CFCC39` ON `facebook_user`(`user_id`): Incorrect index name 'FK609FD5A460CFCC39' 

그것은 문제의 인덱스처럼 보인다 는 FK 제약 조건이며 생성 된 업그레이드 스크립트에서 나중에 인덱스로 다시 사용됩니다. 이름을 변경하여 복제본을 제거하면 모든 것이 잘 동작합니다. 나는 MySQL을 사용하고있다. 내가 뭔가 잘못하고 있는거야?

감사합니다.

+0

지금까지 플러그인을 성공적으로 사용해 오셨습니까? – David

+0

@David 아직 나에게 새롭다. 나는 몇 가지 기본적인 업그레이드를 시도하고 그들은 일했다. – skaz

+0

DataSource.groovy 파일에'dbcreate = ".. something .."'이 있으면 플러그인과 충돌 할 수 있습니다. 그러나 이미 업그레이드를 수행했다면 가능성이 적습니다. – David

답변

9

changelog.groovy를 createIndex의 뒤에 addForeignConstraint 's를 배치하도록 편집하면 매력처럼 작동한다는 것을 알았습니다. 내가 생각하기에 changelog 생성 스크립트의 또 다른 문제점.

+1

이상하게도이 솔루션은 나에게 적합하지 않았습니다. 나는 여러개의 addForeignConstraint와 여러 개의 createIndex를 가졌다. 키를 변경하면 작동 할 수 있지만 나중에 불리한 영향을 미치는지 여부는 알 수 없습니다. – Weezle

2

실제로 이것은 MySQL과 관련이 있으며 플러그인 자체는 아닙니다. 이 버그를 참조하십시오 : http://bugs.mysql.com/bug.php?id=55465

Sebastien의 답변은 해결 방법입니다.

1

this question/answer에 따라 MYSQL은 외래 키 열을 자동으로 인덱싱합니다. 따라서 외래 키 제약 조건을 추가 할 때 색인을 정의 할 필요가 없습니다. db migration 플러그인을 사용하고 dbm-gorm-diff가 생성하는 외래 키의 'index'항목을 제거하십시오.

이것은 자원을 낭비하는 동일한 열에 하나 이상의 색인을 생성 할 가능성이 높기 때문에 이름을 변경하는 것보다 조금 더 나은 것으로 생각합니다.