很奇怪的情况。我有一个根 changelog.groovy,它是当前的生产数据库。我还有一个 latest-changelog.groovy,它基本上是一个带有一些细微差异修正的差异(因为差异并不完美)。
从空数据库开始,以下工作(场景 1):
- mysqldump 生产数据库
- 源到开发数据库
- 删除包含 latest-changelog.groovy
- 执行 dbm-changelog-sync
- 添加包含 latest-changelog.groovy
- 执行 dbm-update
以下不起作用(场景 2):
- 删除开发数据库
- 创建空的开发数据库
- 执行 dbm-update
会发生什么是初始 changelog.groovy 运行顺利。但是当它到达 latest-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")
}
我想知道为什么它适用于Scenario 1但在Scenario 2中失败。