当前位置: 首页 > 知识库问答 >
问题:

多模式Liquibase

鲍理
2023-03-14
<?xml version="1.0" encoding="UTF-8"?> 
<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-3.1.xsd">

  <include file="my_schema_1.xml" relativeToChangelogFile="true" /> 
</databaseChangeLog>

这里的问题是,我想创建一个changelog,它可以更新其中的所有模式,但我没有找到一种方法来硬编码changelog中的模式名。可以通过generateChangelog以某种方式将其获取到changelog吗(这样模式名就在my_schema_1.xml中),或者我可以将其键入到changelog中吗?我要找的是这样的:

 <?xml version="1.0" encoding="UTF-8"?> 
<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-3.1.xsd">

    <TAG WHERE I COULD INSERT SCHEMANAME>
  <include file="my_schema_1.xml" relativeToChangelogFile="true" /> 
      <TAG WHERE I COULD INSERT SCHEMANAME>
    <include file="my_schema_2.xml" relativeToChangelogFile="true" />
       etc...
</databaseChangeLog>

因为现在只有在命令行中运行liquibase时才能在update子句中更改模式。当我将客户数据库制作到他们的服务器时,这也很方便。我可以创建customer_master.xml并在其中硬编码它们的模式名,然后从头开始运行到服务器。到目前为止,我找到的唯一插入模式名的地方是在进行commandline调用时。这意味着我必须以不同的方式更新每个模式,或者制作一些powershell脚本来为我完成这些操作...

共有1个答案

唐烨煜
2023-03-14

大多数更改标记都有一个“schemaname”属性,您可以使用它来指定架构。例如,

如果您的架构总是被命名为相同的,您可以直接将它们硬编码到change标记中。如果它们从deploy更改为deploy,您可能希望使用changelog参数,以便可以使用 ,然后在运行时指定primarySchema等于什么。

您将需要在每个变更集中指定schemaName,否则它将使用默认的schemaName,而该schemaName不能在脚本中进行部分更改。

 类似资料:
  • 我对log4j很陌生。我想用以下信息显示日志消息:日志时间戳、优先级、完全限定的类名、消息、仅类名。我尝试显示两次类别,一次使用转换模式,一次使用其他转换模式。这是我的log4j。属性: 可悲的是,它不起作用。如何在同一个日志消息中显示完全限定的类名和类名?蒂娅。 弗朗西斯科

  • 通过 flag /.../m 可以开启多行模式。 这仅仅会影响 ^ 和 $ 锚符的行为。 在多行模式下,它们不仅仅匹配文本的开始与结束,还匹配每一行的开始与结束。 行的开头 ^ 在这个有多行文本的例子中,正则表达式 /^\d+/gm 将匹配每一行的开头数字: let str = `1st place: Winnie 2nd place: Piglet 33rd place: Eeyore`; a

  • 您可以使用RSVP.hash定义多个模型,它使用对象返回promise。 语法 (Syntax) Ember.Route.extend ({ model() { return Ember.RSVP.hash({ //code here }) } }); 例子 (Example) 下面的示例显示了如何使用RSVP.hash指定多个模型来显示数据

  • 问题 你正在试着使用正则表达式去匹配一大块的文本,而你需要跨越多行去匹配。 解决方案 这个问题很典型的出现在当你用点(.)去匹配任意字符的时候,忘记了点(.)不能匹配换行符的事实。 比如,假设你想试着去匹配C语言分割的注释: >>> comment = re.compile(r'/\*(.*?)\*/') >>> text1 = '/* this is a comment */' >>> text

  • 更多模式功能 到目前为止,我们只展示了正则表达式的一部分功能。在本节,我们将展示一些新的元字符和如何使用组来检索被匹配的文本部分。 == ==