- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我的要求是我想比较两个数据库,然后我想生成一个差异 sql。注意我只想通过 java 来完成。我是 Liquibase 的新手。我找到了一个名为 CommandLineUtils 的 java api,使用它我可以生成新数据库的 changeLog。当我执行方法 doDiffToChangeLog 时,我的 changeLog xml 为空。你能告诉我哪里做错了吗?
这是我的java代码
Database database=liqui.createDatabaseObject(OracleDriver.class.getClassLoader(), "jdbc:oracle:thin:@localhost:1521:XE", "archive_pmd", "archive_pmd", "oracle.jdbc.driver.OracleDriver", "archive_pmd", null, null);
liqui.doGenerateChangeLog("test.xml", database, "archive_pmd", null, null, null, null);
Database database2=liqui.createDatabaseObject(OracleDriver.class.getClassLoader(), "jdbc:oracle:thin:@localhost:1521:XE", "archive_dbs", "archive_dbs", "oracle.jdbc.driver.OracleDriver", "archive_pmd", null, null);
liqui.doDiffToChangeLog("chageLog.xml", database2, database);
这是我生成的test.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd">
<changeSet author="DELL (generated)" id="1331066786490-1">
<createTable schemaName="archive_pmd" tableName="PMD00_SEQUENCE">
<column name="PMD00_ID" type="NUMBER">
<constraints nullable="false"/>
</column>
<column name="TABLE_IDENTIFIER" type="VARCHAR2(50 BYTE)"/>
<column defaultValueNumeric="0" name="CURRENT_VALUE" type="NUMBER">
<constraints nullable="false"/>
</column>
<column name="LAST_ACCESSED_TS" type="DATE"/>
</createTable>
</changeSet>
<changeSet author="DELL (generated)" id="1331066786490-2">
<createTable schemaName="archive_pmd" tableName="PMD01_META_DATA">
<column name="PMD01_ID" type="NUMBER">
<constraints nullable="false"/>
</column>
<column name="CATEGORY" type="VARCHAR2(30 BYTE)">
<constraints nullable="false"/>
</column>
<column name="NAME" type="VARCHAR2(50 BYTE)">
<constraints nullable="false"/>
</column>
<column name="CODE" type="VARCHAR2(100 BYTE)">
<constraints nullable="false"/>
</column>
<column name="STATUS" type="VARCHAR2(1 BYTE)">
<constraints nullable="false"/>
</column>
<column name="PMD01_METADATAVER" type="NUMBER(4,0)">
<constraints nullable="false"/>
</column>
<column name="DMLASTUPDATEDATE" type="DATE">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="DELL (generated)" id="1331066786490-3">
<createTable schemaName="archive_pmd" tableName="PMD13_DB_APPLICATION">
<column name="ID" type="NUMBER(17,0)">
<constraints nullable="false"/>
</column>
<column name="APPLICATIONNAME" type="VARCHAR2(200 BYTE)">
<constraints nullable="false"/>
</column>
<column name="ENVIRONMENT" type="NUMBER(17,0)">
<constraints nullable="false"/>
</column>
<column name="SERVERIP" type="VARCHAR2(400 BYTE)">
<constraints nullable="false"/>
</column>
<column name="USERID" type="VARCHAR2(200 BYTE)">
<constraints nullable="false"/>
</column>
<column name="PASSWORD" type="VARCHAR2(200 BYTE)">
<constraints nullable="false"/>
</column>
<column name="DBTYPE" type="NUMBER(17,0)">
<constraints nullable="false"/>
</column>
<column name="DMLASTUPDATE" type="DATE">
<constraints nullable="false"/>
</column>
<column name="SERVERPORT" type="NUMBER(17,0)">
<constraints nullable="false"/>
</column>
<column name="SERVICE" type="VARCHAR2(400 BYTE)">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="DELL (generated)" id="1331066786490-4">
<createTable schemaName="archive_pmd" tableName="PMD14_DB_VERSION">
<column name="ID" type="NUMBER(17,0)">
<constraints nullable="false"/>
</column>
<column name="MAJORVERSION" type="NUMBER(17,0)">
<constraints nullable="false"/>
</column>
<column name="MINORVERSION" type="NUMBER(17,0)">
<constraints nullable="false"/>
</column>
<column name="PATCHVERSION" type="NUMBER(17,0)">
<constraints nullable="false"/>
</column>
<column name="DATEEXECUTED" type="DATE">
<constraints nullable="false"/>
</column>
<column name="DML_SCRIPT" type="BLOB">
<constraints nullable="false"/>
</column>
<column name="STATUS" type="VARCHAR2(20 BYTE)">
<constraints nullable="false"/>
</column>
<column name="REQUESTOR" type="VARCHAR2(200 BYTE)">
<constraints nullable="false"/>
</column>
<column name="DMLASTUPDATE" type="DATE">
<constraints nullable="false"/>
</column>
<column name="DML_SCRIPTNAME" type="VARCHAR2(200 BYTE)">
<constraints nullable="false"/>
</column>
<column name="DB_APPLICATION_FK" type="NUMBER">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="DELL (generated)" id="1331066786490-5">
<createTable schemaName="archive_pmd" tableName="PMD15_DBCOMMIT_LOG">
<column name="ID" type="NUMBER(17,0)">
<constraints nullable="false"/>
</column>
<column name="MAJORVERSION" type="NUMBER(17,0)">
<constraints nullable="false"/>
</column>
<column name="MINORVERSION" type="NUMBER(17,0)">
<constraints nullable="false"/>
</column>
<column name="PATCHVERSION" type="NUMBER(17,0)">
<constraints nullable="false"/>
</column>
<column name="DATEEXECUTED" type="DATE">
<constraints nullable="false"/>
</column>
<column name="SCRIPT" type="BLOB">
<constraints nullable="false"/>
</column>
<column name="EXECUTIONSTATUS" type="VARCHAR2(200 BYTE)">
<constraints nullable="false"/>
</column>
<column name="REQUESTOR" type="VARCHAR2(400 BYTE)">
<constraints nullable="false"/>
</column>
<column name="LOGREPORT" type="BLOB">
<constraints nullable="false"/>
</column>
<column name="DMLASTUPDATE" type="DATE">
<constraints nullable="false"/>
</column>
<column name="DBAPPLICATIONFK" type="NUMBER(17,0)">
<constraints nullable="false"/>
</column>
<column name="LOGREPORTNAME" type="VARCHAR2(400 BYTE)">
<constraints nullable="false"/>
</column>
<column name="SCRIPTNAME" type="VARCHAR2(400 BYTE)">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="DELL (generated)" id="1331066786490-6">
<createIndex indexName="SYS_C004087" schemaName="archive_pmd" tableName="PMD00_SEQUENCE" tablespace="SYSTEM" unique="true">
<column name="PMD00_ID"/>
</createIndex>
</changeSet>
<changeSet author="DELL (generated)" id="1331066786490-7">
<createIndex indexName="SYS_C004084" schemaName="archive_pmd" tableName="PMD01_META_DATA" tablespace="SYSTEM" unique="true">
<column name="PMD01_ID"/>
</createIndex>
</changeSet>
<changeSet author="DELL (generated)" id="1331066786490-8">
<createIndex indexName="SYS_C004050" schemaName="archive_pmd" tableName="PMD13_DB_APPLICATION" tablespace="SYSTEM" unique="true">
<column name="ID"/>
</createIndex>
</changeSet>
<changeSet author="DELL (generated)" id="1331066786490-9">
<createIndex indexName="SYS_C004062" schemaName="archive_pmd" tableName="PMD14_DB_VERSION" tablespace="SYSTEM" unique="true">
<column name="ID"/>
</createIndex>
</changeSet>
<changeSet author="DELL (generated)" id="1331066786490-10">
<createIndex indexName="SYS_C004076" schemaName="archive_pmd" tableName="PMD15_DBCOMMIT_LOG" tablespace="SYSTEM" unique="true">
<column name="ID"/>
</createIndex>
</changeSet>
<changeSet author="DELL (generated)" id="1331066972401-1">
<createTable schemaName="archive_pmd" tableName="PMD00_SEQUENCE">
<column name="PMD00_ID" type="NUMBER">
<constraints nullable="false"/>
</column>
<column name="TABLE_IDENTIFIER" type="VARCHAR2(50 BYTE)"/>
<column defaultValueNumeric="0" name="CURRENT_VALUE" type="NUMBER">
<constraints nullable="false"/>
</column>
<column name="LAST_ACCESSED_TS" type="DATE"/>
</createTable>
</changeSet>
<changeSet author="DELL (generated)" id="1331066972401-2">
<createTable schemaName="archive_pmd" tableName="PMD01_META_DATA">
<column name="PMD01_ID" type="NUMBER">
<constraints nullable="false"/>
</column>
<column name="CATEGORY" type="VARCHAR2(30 BYTE)">
<constraints nullable="false"/>
</column>
<column name="NAME" type="VARCHAR2(50 BYTE)">
<constraints nullable="false"/>
</column>
<column name="CODE" type="VARCHAR2(100 BYTE)">
<constraints nullable="false"/>
</column>
<column name="STATUS" type="VARCHAR2(1 BYTE)">
<constraints nullable="false"/>
</column>
<column name="PMD01_METADATAVER" type="NUMBER(4,0)">
<constraints nullable="false"/>
</column>
<column name="DMLASTUPDATEDATE" type="DATE">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="DELL (generated)" id="1331066972401-3">
<createTable schemaName="archive_pmd" tableName="PMD13_DB_APPLICATION">
<column name="ID" type="NUMBER(17,0)">
<constraints nullable="false"/>
</column>
<column name="APPLICATIONNAME" type="VARCHAR2(200 BYTE)">
<constraints nullable="false"/>
</column>
<column name="ENVIRONMENT" type="NUMBER(17,0)">
<constraints nullable="false"/>
</column>
<column name="SERVERIP" type="VARCHAR2(400 BYTE)">
<constraints nullable="false"/>
</column>
<column name="USERID" type="VARCHAR2(200 BYTE)">
<constraints nullable="false"/>
</column>
<column name="PASSWORD" type="VARCHAR2(200 BYTE)">
<constraints nullable="false"/>
</column>
<column name="DBTYPE" type="NUMBER(17,0)">
<constraints nullable="false"/>
</column>
<column name="DMLASTUPDATE" type="DATE">
<constraints nullable="false"/>
</column>
<column name="SERVERPORT" type="NUMBER(17,0)">
<constraints nullable="false"/>
</column>
<column name="SERVICE" type="VARCHAR2(400 BYTE)">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="DELL (generated)" id="1331066972401-4">
<createTable schemaName="archive_pmd" tableName="PMD14_DB_VERSION">
<column name="ID" type="NUMBER(17,0)">
<constraints nullable="false"/>
</column>
<column name="MAJORVERSION" type="NUMBER(17,0)">
<constraints nullable="false"/>
</column>
<column name="MINORVERSION" type="NUMBER(17,0)">
<constraints nullable="false"/>
</column>
<column name="PATCHVERSION" type="NUMBER(17,0)">
<constraints nullable="false"/>
</column>
<column name="DATEEXECUTED" type="DATE">
<constraints nullable="false"/>
</column>
<column name="DML_SCRIPT" type="BLOB">
<constraints nullable="false"/>
</column>
<column name="STATUS" type="VARCHAR2(20 BYTE)">
<constraints nullable="false"/>
</column>
<column name="REQUESTOR" type="VARCHAR2(200 BYTE)">
<constraints nullable="false"/>
</column>
<column name="DMLASTUPDATE" type="DATE">
<constraints nullable="false"/>
</column>
<column name="DML_SCRIPTNAME" type="VARCHAR2(200 BYTE)">
<constraints nullable="false"/>
</column>
<column name="DB_APPLICATION_FK" type="NUMBER">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="DELL (generated)" id="1331066972401-5">
<createTable schemaName="archive_pmd" tableName="PMD15_DBCOMMIT_LOG">
<column name="ID" type="NUMBER(17,0)">
<constraints nullable="false"/>
</column>
<column name="MAJORVERSION" type="NUMBER(17,0)">
<constraints nullable="false"/>
</column>
<column name="MINORVERSION" type="NUMBER(17,0)">
<constraints nullable="false"/>
</column>
<column name="PATCHVERSION" type="NUMBER(17,0)">
<constraints nullable="false"/>
</column>
<column name="DATEEXECUTED" type="DATE">
<constraints nullable="false"/>
</column>
<column name="SCRIPT" type="BLOB">
<constraints nullable="false"/>
</column>
<column name="EXECUTIONSTATUS" type="VARCHAR2(200 BYTE)">
<constraints nullable="false"/>
</column>
<column name="REQUESTOR" type="VARCHAR2(400 BYTE)">
<constraints nullable="false"/>
</column>
<column name="LOGREPORT" type="BLOB">
<constraints nullable="false"/>
</column>
<column name="DMLASTUPDATE" type="DATE">
<constraints nullable="false"/>
</column>
<column name="DBAPPLICATIONFK" type="NUMBER(17,0)">
<constraints nullable="false"/>
</column>
<column name="LOGREPORTNAME" type="VARCHAR2(400 BYTE)">
<constraints nullable="false"/>
</column>
<column name="SCRIPTNAME" type="VARCHAR2(400 BYTE)">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="DELL (generated)" id="1331066972401-6">
<createIndex indexName="SYS_C004087" schemaName="archive_pmd" tableName="PMD00_SEQUENCE" tablespace="SYSTEM" unique="true">
<column name="PMD00_ID"/>
</createIndex>
</changeSet>
<changeSet author="DELL (generated)" id="1331066972401-7">
<createIndex indexName="SYS_C004084" schemaName="archive_pmd" tableName="PMD01_META_DATA" tablespace="SYSTEM" unique="true">
<column name="PMD01_ID"/>
</createIndex>
</changeSet>
<changeSet author="DELL (generated)" id="1331066972401-8">
<createIndex indexName="SYS_C004050" schemaName="archive_pmd" tableName="PMD13_DB_APPLICATION" tablespace="SYSTEM" unique="true">
<column name="ID"/>
</createIndex>
</changeSet>
<changeSet author="DELL (generated)" id="1331066972401-9">
<createIndex indexName="SYS_C004062" schemaName="archive_pmd" tableName="PMD14_DB_VERSION" tablespace="SYSTEM" unique="true">
<column name="ID"/>
</createIndex>
</changeSet>
<changeSet author="DELL (generated)" id="1331066972401-10">
<createIndex indexName="SYS_C004076" schemaName="archive_pmd" tableName="PMD15_DBCOMMIT_LOG" tablespace="SYSTEM" unique="true">
<column name="ID"/>
</createIndex>
</changeSet>
</databaseChangeLog>
===这是我的 changeLog.xml(不同的)
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd"/>
注意 archive_dbs 不包含任何表。为什么 liquibase didint 显示 archive_pmd 中的表在 archive_dbs 中丢失?
最佳答案
这是一个适用于版本 3.2.2 的示例:
void diff(Connection referenceConnection, Connection targetConnection) throws LiquibaseException, IOException, ParserConfigurationException {
Liquibase liquibase = null;
try {
Database referenceDatabase = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(new JdbcConnection(referenceConnection));
Database targetDatabase = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(new JdbcConnection(targetConnection));
liquibase = new Liquibase("", new FileSystemResourceAccessor(), referenceDatabase);
DiffResult diffResult = liquibase.diff(referenceDatabase, targetDatabase, new CompareControl());
new DiffToChangeLog(diffResult, new DiffOutputControl()).print(System.out);
} finally {
if (liquibase != null) {
liquibase.forceReleaseLocks();
}
}
}
关于java - 如何使用 java 在 liquibase 中区分两个新模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9592153/
我目前正在将 liquibase 与基于 SQL 的变更集一起使用,其中大多数都包含 INSERT 语句。根据文档,这种类型的更新操作不会产生(通过工具)自动回滚语句。 我的问题是(我可能遗漏了一些东
我刚刚开始使用 liquibase,它似乎很有用。我最大的问题是回滚。 我正在将我的 liquibase 变更日志烘焙到其中包含我的数据层的 jar 中,并且在应用程序启动时,我正在使用应用程序中的
我正在针对一个干净的 HSQLDB 实例同时运行 Liquibase 迁移,当其中一个更新成功时,另一个失败,如下所示: Exception in thread "Thread-7" liquibas
我正在尝试在雪花上开始使用 liquibase。 我想我已经快完成 liquibase.properties 文件了 driver: net.snowflake.client.jdbc.Snowfla
正在使用的 liquibase 版本 - org.liquibase:liquibase-core:3.8.2。 (不是专业版) Liquibase 文档(1 和 2)在下面说明了 splitStat
我正在使用 Liquibase 对现有数据库进行版本控制,所以我正在使用 liquibase \ --logLevel=debug \ --driver=com.mysql.jdbc.Driv
我在使用 liquibase 更改 postgres 数据库中的列长度时遇到问题。 我有一个带有字段描述 varchar(300) 的表帐户。我想把它改成 varchar(2000)。 我在同一个文件
问题:当用户被删除时,关联的记录不会从数据库中删除。相反,我设置了 user.delete列到 true .现在我需要在 user.email 上设置一个唯一约束但仅适用于事件用户(未删除)。 我怎样
我想更好地了解 Liquibase 如何执行变更集。 1) a) 例如,我有一个包含 4 个更改集的更改日志,我执行 updateDatabase ( http://www.liquibase.org
运行 liquibase --url=jdbc:oracle:thin:@localhost:1521/XE -- driver=oracle.jdbc.OracleDriver --chang
我已经看到如何重命名 DATABASECHANGELOG 表,但我想要做的是在每个服务器的一个数据库中创建它们,然后部署到该服务器上的其他数据库。我们在 MSSQL 和 Sybase 数据库上使用 L
我已经将 Liquibase 添加到我的应用程序中,这是一个在 JBoss EAP 6 上运行的 EAR。我使用 Maven 作为构建工具。我想知道运行 Liquibase 更新的首选方式是什么。目前
我需要制作一个 Liquibase 迁移脚本,仅当主键尚未添加时才将主键添加到数据库表。执行此操作的最佳方法是什么?它将是这样的: (What goes here? Should I
我在现有的变更日志文件中添加了一些新的变更集,并且只想执行新插入的变更集中的 2 个。当我在 liquibase 中给出更新命令时,它会更新所有未读的变更集并更新数据库。但是我只想执行变更日志文件中这
我发现 liquibase 使用更改日志文件的完整路径来计算校验和。 此行为限制修改更改日志文件名,并在重命名文件后尝试再次重新应用更改集。 有没有办法将 liquibase 配置为仅使用更改日志 I
我的数据库中有一个序列,是通过 Liquibase 生成的。在重构过程中,我们决定不喜欢我们给它起的名字,我们想重命名它,保留当前存在的所有数据。 alter a sequence 似乎有可能,但我没
我想更新名为“password”的列的类型。目前它有 NVARCHAR(40) 类型,我希望它是 NVARCHAR(64) 类型。这就是我所做的: 还需要做什
我正在创建一个包含 3 列的链接表; id、product_id、锦标赛id。 向“id”列添加 uniqueConstraint 是微不足道的,但我想确保任何一对 (product_id, tour
我正在尝试使用liquibase插入标签插入数据。当我在value标签中输入数字时,它可以正常工作。 但是我正在寻找一个简单的功能,即使我没有将其作为表定义的一部分,它也可以处理默认日期(数据库的当前
我正在尝试根据特定日期回滚数据库。 liquibase rollbackToDate 2013-05-14 10:13:16 它抛出以下错误: Error:Unexpected date/time f
我是一名优秀的程序员,十分优秀!