非常奇怪的情況。我有一個根目錄changelog.groovy,它是當前的生產數據庫。我也有一個latest-changelog.groovy,它基本上是一些差異較小的差異修正(因爲差異並不完美)。嘗試刪除主鍵時數據庫遷移失敗,但僅有時會出現
建立一個空數據庫,下面的工作開始(方案1):
- mysqldump的生產數據庫
- 源到開發數據庫
- 刪除包括最新-changelog.groovy
- 的執行dbm-changelog-sync
- add include of latest-changelog.groovy
- 執行DBM更新
下不工作(場景2):
- 下降dev的數據庫
- 創建空dev的數據庫
- 執行DBM更新
會發生什麼,最初的changelog.groovy運行順利。但是,當它得到最新-changelog.groovy它失敗,出現以下:
造成的:java.sql.SQLException中:錯誤的 「./main_dev/#sql-b4_2334' 重命名到 」 ./main_dev/book_project_note」(錯誤:150)
我有一個表定義像這樣:
mysql> desc book_project_note;
+---------------------------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------------------+------------+------+-----+---------+-------+
| book_project_id | bigint(20) | NO | PRI | NULL | |
| note_id | bigint(20) | NO | PRI | NULL | |
| book_project_note_type_id | bigint(20) | NO | PRI | NULL | |
+---------------------------+------------+------+-----+---------+-------+
以下變更是什麼失敗:
changeSet(author: "gdboling (generated)", id: "1341248060406-80") {
dropPrimaryKey(tableName: "book_project_note")
}
我想在這裏做的是刪除主鍵,然後重新創建它們的2如下:
changeSet(author: "gdboling (generated)", id: "1341248060406-72") {
addPrimaryKey(columnNames: "book_project_id, note_id", constraintName: "book_project_PK", tableName: "book_project_note")
}
我不知道爲什麼它的工作原理與方案1但失敗方案2 方案2。
您可能會嘗試運行dbm-update-sql以查看生成的SQL;應該在那裏有用。 – 2012-07-10 01:51:15