Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用liquibase删除数据库中的表无效_Java_Spring Boot_Liquibase Hibernate - Fatal编程技术网

Java 使用liquibase删除数据库中的表无效

Java 使用liquibase删除数据库中的表无效,java,spring-boot,liquibase-hibernate,Java,Spring Boot,Liquibase Hibernate,我正在开发一个SpringBoot应用程序,在PostsgreDB上使用hibernate和liquibase。当我启动springboot应用程序时,数据库中的changelog被更新,日志显示脚本运行成功,但表仍然在模式中 这是我的db.changelog.xml: 这是我日志文件的一部分: 2021-01-25 15:43:50,438 INFO liquibase.lockservice : Changelog-Protokoll erfolgreich gesperrt. 202

我正在开发一个SpringBoot应用程序,在PostsgreDB上使用hibernate和liquibase。当我启动springboot应用程序时,数据库中的changelog被更新,日志显示脚本运行成功,但表仍然在模式中

这是我的db.changelog.xml:

这是我日志文件的一部分:

2021-01-25 15:43:50,438 INFO  liquibase.lockservice : Changelog-Protokoll erfolgreich gesperrt.
2021-01-25 15:43:50,686 INFO  liquibase.changelog : Reading from public.databasechangelog
2021-01-25 15:43:50,704 INFO  liquibase.changelog : ChangeSet db/dbchangelog.xml::deletetablehans::stimpson ran successfully in 0ms
2021-01-25 15:43:50,709 INFO  liquibase.lockservice : Successfully released change log lock
我不在乎语言为什么会改变,但当我查看数据库时,我看到名为Hans的表仍然存在。但是为什么呢?我确实尝试过显式提交,并在自己的行中使用分隔符,但我不明白结果是什么? 这是我的liquibase.properties文件:

changeLogFile=src/main/resources/db/dbchangelog.xml
url=jdbc:postgresql://localhost:5432/padsyhw3
username=dbuser
password=dbpass
driver=org.postgresql.Driver
这是数据库中databasechangelog表中唯一的数据行:

 deletetablehans    stimpson    db/dbchangelog.xml  2021-01-25 15:49:05 1 EXECUTED  8:90e2fa99c6beeace580e429bd2bf9ae3  sqlFile         4.2.2

我对你的问题有一个有效的解决办法

  • 我想知道deletetablehans和deletetablehans之间的大小写差异是否会对变更集的执行产生影响

  • 根据,当为postgre使用dbms时,您应该使用值postgresql,而使用postgre

  • 您是否有任何特定的理由在SQL文件中使用变更集来执行删除操作?如果没有人能给你一个有效的解决方案,我至少可以看到两种选择

  • 备选方案1:使用sql而不是sqlFile

    <changeSet author="stimpson" id="deletetablehans">
        <sql dbms="postgresql">
            DROP TABLE HANS;
        </sql>
    </changeSet>
    
    
    升降台;
    
    备选方案2:使用liquibase dropTable

    <changeSet author="stimpson" id="deletetablehans">
        <dropTable tableName="HANS" />
    </changeSet>
    

    我对你的问题有一个有效的解决方案

  • 我想知道deletetablehans和deletetablehans之间的大小写差异是否会对变更集的执行产生影响

  • 根据,当为postgre使用dbms时,您应该使用值postgresql,而使用postgre

  • 您是否有任何特定的理由在SQL文件中使用变更集来执行删除操作?如果没有人能给你一个有效的解决方案,我至少可以看到两种选择

  • 备选方案1:使用sql而不是sqlFile

    <changeSet author="stimpson" id="deletetablehans">
        <sql dbms="postgresql">
            DROP TABLE HANS;
        </sql>
    </changeSet>
    
    
    升降台;
    
    备选方案2:使用liquibase dropTable

    <changeSet author="stimpson" id="deletetablehans">
        <dropTable tableName="HANS" />
    </changeSet>
    
    
    
    您能在db中检查您的数据库\u change\u log表以检查此更改的状态吗?logI确实更新了问题,Avikc您可以尝试从db change log表中删除此行,然后执行您的liquibase change set如果更改集在database\u change\u log表中标记为executed,那么它就不会再执行了。你能在db中检查你的数据库更改日志表来检查这个更改的状态吗?logI确实更新了这个问题,Avikcan你可以试着从db更改日志表中删除这一行,然后执行你的liquibase更改集如果更改集在数据库更改日志表中标记为executed,我想这是你的第二点我想这是你的第二点