2012-10-02 22 views
5

Tôi đang sử dụng grails 2.0.3, trình di chuyển cơ sở dữ liệu (liquibase) plugin 1.1 và postgres 9.1.Liquibase: mối quan hệ "databasechangeloglock" đã tồn tại, sử dụng plugin grails và lược đồ không mặc định

Tôi nhìn thấy những gì tôi nghĩ là cùng một vấn đề được mô tả bởi những người dùng khác, nhưng với nếp nhăn:

Các nếp nhăn là:

  1. Tôi đang sử dụng grails và plugin di chuyển cơ sở dữ liệu.
  2. Cơ sở dữ liệu sản xuất không sử dụng lược đồ mặc định.
  3. I phải sử dụng di chuyển cơ sở dữ liệu tự động khi bắt đầu (grails.plugin.databasemigration.updateOnStart = true), bởi vì không có nhà phát triển nào có quyền truy cập vào (các) cơ sở dữ liệu sản xuất thực tế.

Sự hiểu biết của tôi về vấn đề này là liquibase đang kiểm tra lược đồ mặc định cho bảng bảo trì của nó và cố gắng tạo bảng ở đúng vị trí, lược đồ không mặc định. Nhưng tất nhiên họ đã tồn tại sau lần thực hiện đầu tiên. Dường như có một giải pháp thay thế bằng cách chỉ định tùy chọn dòng lệnh, nhưng tôi không có tùy chọn đó vì yêu cầu chạy tự động, trong ứng dụng grails được triển khai.

Có cách nào để làm cho plugin di chuyển cơ sở dữ liệu thực hiện những gì tôi cần không? Nói các DBA để sắp xếp các lược đồ khác nhau không phải là một tùy chọn.

Cảm ơn trước, Ray A. Conner

Trả lời

3

điều kiện tiên quyết và các lệnh refactoring mất một thuộc tính schemaName.

<tableExists schemaName="myschema" tableName="..."/> 
<createTable schemaName="myschema" tableName="..."/> 

Bạn cũng có thể parametrize nó:

<databaseChangeLog ..> 
    <property name="schema.name" value="myschema"/> 
    .... 
    <changeset ...> 
    <createTable schemaName="${schema.name]" tableName="..."/> 
    </changeset> 
</databaseChangeLog> 

Đối Liquibase bản thân, bạn có thể đặt defaultSchemaName, trong trường hợp của bạn (Grails) này sẽ là:

grails.plugin.databasemigration.updateOnStartDefaultSchema 
+0

Đó là cho refactoring bảng trong lược đồ ứng dụng của tôi. Vấn đề này là với các bảng mà liquibase tạo ra cho chính nó, để giữ các changesets và cho khóa nội bộ. –

+0

Đã thêm trường hợp của bạn. –

+1

Tôi đã rời khỏi công việc mà đây là vấn đề và tôi chưa thể thiết lập môi trường để xác minh chỉnh sửa của bạn. Hy vọng rằng trước khi quá lâu tôi sẽ có thể làm điều đó. –

Các vấn đề liên quan