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

Liquibase Update命令不会删除元素(表、函数、过程…)尽管我的解决方案中没有SQL脚本,但我还是从数据库中删除了

杨飞飙
2023-03-14

我使用liquibase工具来管理postgres数据库。我的工作如下:

我有一个由不同文件夹组成的解决方案,其中包含负责模式创建、表创建、类型创建、过程创建等的SQL脚本。。。然后,我有一个xml格式的变更日志文件,其中包含以下信息:

includeAll path=“#{Server.WorkingDirectory}#/02-Schema”relativeToChangelogFile=“false”

includeAll path=“#{Server.WorkingDirectory}#/03-Types”relativeToChangelogFile=“false”

includeAll path=“#{Server.WorkingDirectory}#/04-Tables”relativeToChangelogFile=“false”

includeAll path=“#{Server.WorkingDirectory}#/05-Fonctions”relativeToChangelogFile=“false”

includeAll path=“#{Server.WorkingDirectory}#/06-存储过程”relativeToChangelogFile=“false”

我通过命令行运行liquibase:

liquibase--change eLogFile=$(Changelog. File. Name)--驱动程序=$(驱动程序。名称)--classpath=$(驱动程序。类路径)--url=$(BDD. URL)--username=$(BDD. Login)--Password=$(BDD. Password)更新

这使Liquibase能够获取changelogFile中列出的不同文件夹中的所有SQL脚本,将其与url$(BDD.url)处的当前数据库进行比较,并生成一个包含要执行的所有SQL查询的增量脚本,以拥有一个与我的解决方案相对应的数据库。

这在我添加新脚本(新表或过程)或修改现有脚本时效果很好,我的数据库按预期由命令行正确更新。但是,当我从解决方案中删除脚本时,它不会做任何事情。事实上,我想要的是:

>

  • 我有一个SQL文件,其中包含位于文件夹“04-Tables”中的查询“CREATE TABLE my_TABLE”。

    我执行上面的update命令,它在我的数据库中创建表“my_table”。

    我终于不想再在我的数据库中使用这个表了。因此,我想简单地从解决方案中删除相应的SQL脚本,然后再次运行“update”命令,简单地删除数据库中的表,通过liquibase“update”命令自动生成一个“DROP table my_table”。但这不起作用,因为当我删除sql文件时,Liquibase不会记录任何更改(而当我添加或修改文件时,它会记录任何更改)。

    有人知道这个问题的解决方案吗?在SQL解决方案中,当元素没有“创建”查询时,是否有特定的命令来删除该元素?

    非常感谢你的帮助:)

  • 共有1个答案

    桂浩言
    2023-03-14

    您需要显式编写一个脚本来删除该表。另一种选择是,如果已将回滚SQL指定为原始SQL脚本的一部分,则回滚更改。

    有一个Pro版本选项来回滚单个更新,使用免费/社区版本,您可以按顺序回滚最后几个更改

    前任;我做了“liquibase rollbackCount 5”将回滚最后5个更改,这些更改仅在我将所需的回滚sql编码为脚本的一部分时应用。

    --回滚下降表测试。用户1;升降台测试。cd_活动;

     类似资料:
    • 我使用liquibase工具来管理一个postgres数据库。我的工作如下: 我有一个由不同文件夹组成的解决方案,其中包含负责模式创建、表创建、类型创建、过程创建等的SQL脚本。然后,我有一个xml格式的ChangeLog文件,包含以下信息: includeAll path=“#{server.workingdirectory}#/05-fonctions”relativeToChangeLogF

    • 这段代码连接到数据库 这是原始相册DAO的代码,我正在尝试按名字删除相册,我添加了albumDAO来测试是否连接了ti,但它仍然不工作

    • 我正试图从数据库中删除一行,但得到以下错误

    • 我是JSP的新手,我正在尝试创建一个web界面,用户可以在该界面中输入他们想要删除的信息,并且该信息将在数据库表中删除。 在这里,他们应该输入和,然后应该删除具有两个指定ID的任何数据。但是,它不是从表中删除的。我有个例外 数组索引越界 下面是我的代码:

    • 问题内容: 我有一个原始类型数组,我想从中删除指定索引处的元素。正确而有效的方法是什么? 我正在寻找以下面提到的方式删除元素 但是上述方法看起来只能与Object一起使用,而不能与原语一起使用。 还有其他选择吗?我不能使用任何第三方/附加库 问题答案: 您需要创建一个新数组并复制元素。例如这样的事情: 注意:以上尚未经过测试/调试。 您也可以使用for循环进行复制,但在这种情况下应更快。 该方法最

    • 我是一个初学者开发人员。我的应用程序中有一个SQLite数据库。我已经成功地为其添加了添加、删除和更新功能。我现在正在尝试实现滑动删除,但是,我面临着当前的问题:有时在我滑动并删除项目后,它会成功删除(从数据库中),有时不会,有时会删除上面的项目,有时会删除上面的项目2 id。我做了很多尝试和错误,但我无法确认为什么会发生这种情况。总是发生的是项目从视图中删除,因为它不再有自己的卡(我正在使用ca