我有两个具有相同用户名和密码的数据库,我想生成 SQL 指令以将第一个数据库(skryb)升级到第二个(skryb1):
call liquibase --driver=com.mysql.jdbc.Driver ^
--classpath=../lib/mysql-connector-java-5.1.20-bin.jar ^
--url="jdbc:mysql://localhost:3306/skryb" ^
--username=skryb ^
--password=skryb ^
--referenceUrl="jdbc:mysql://localhost:3306/skryb1" ^
--referenceUsername=skryb ^
--referencePassword=skryb ^
--changeLogFile=1.xml ^
diffChangeLog
call liquibase --driver=com.mysql.jdbc.Driver ^
--classpath=../lib/mysql-connector-java-5.1.20-bin.jar ^
--url="jdbc:mysql://localhost:3306/skryb" ^
--username=skryb ^
--password=skryb ^
--changeLogFile=1.xml ^
updateSQL > 1.sql
在 1.xml 里面有一个生成的 xml 标签:
<changeSet author="steve (generated)" id="1357484117018-4">
<addForeignKeyConstraint baseColumnNames="messageDetails_id" baseTableName="messageline" baseTableSchemaName="skryb1" constraintName="FK2F5B707BF7C835B8" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="messagedetails" referencedTableSchemaName="skryb1" referencesUniqueColumn="false"/>
</changeSet>
为什么 baseTableSchemaName 和 referencedTableSchemaName 在这里是一样的?生成的 SQL 也是错误的:
ALTER TABLE `skryb1`.`messageline` ADD CONSTRAINT `FK2F5B707BF7C835B8` FOREIGN KEY (`messageDetails_id`) REFERENCES `skryb1`.`messagedetails` (`id`) ON UPDATE NO ACTION ON DELETE NO ACTION;
(我不想更新skryb1,我想更新skryb。其余的sql指令不引用skryb1。)