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

无法使用liquibase填充数据库

管玉堂
2023-03-14
spring.datasource.url=jdbc:postgresql://localhost:5432/book-db
spring.datasource.driver-class-name=org.postgresql.Driver

spring.datasource.username=admin
spring.datasource.password=lTIDDYz3n3jD3BeYaAJz
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=create
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
databaseChangeLog:
      - changeSet:
            id: 1
            author: jb
            changes:
            - sqlFile:
                  path: db/migration/insert-books.sql
--liquibase formatted sql
--changeset admin:1
delete from book;
insert into book (id, title)
values (nextval('seq'), 'Functional Programming for Mortals');
commit;

我试过使用和不使用commit。表databasechangelogdatabasechangelog已成功创建,并包含迁移(insert-books)。

迁移是通过的,因为如果我添加了一个无效的insert(到一些不存在的表中),我会得到异常:

ERROR: relation "xxx" does not exist

如何使用LiquiBase用insert-books.sql脚本中的数据填充数据库?

共有1个答案

钱华晖
2023-03-14

不要同时使用liquibase和JPA来管理DB结构。如果希望使用liquibase,请将JPA(Hibernate)设置为只验证模式并在liquibase内管理模式。

spring.jpa.hibernate.ddl-auto=validate

您的解决方案的问题在操作顺序中。当您的应用程序启动时,它首先运行liquibase,它插入数据,然后启动JPA,从头开始创建模式。

在运行应用程序之前尝试删除模式,我敢打赌迁移(liquibase)会失败。

 类似资料:
  • 问题内容: 我正在尝试使用我的Derby数据库数据填充Netbeans GUI-builder jTable。 我在Account.java类中使用以下代码: 理想情况下,我希望能够返回其中包含参数数据和列的tableModel,因为我知道在GUI中执行此方法是一种不好的做法。在线上的所有教程都没有显示如何将数据发送到另一个类,它们只是在GUI类中执行数据库代码。 我有一个错误,它看不到数据和列,

  • 我在Account.java类中使用以下代码: 理想情况下,我希望能够返回包含参数数据和列的tableModel,因为我知道在我的GUI中使用这种方法是不好的做法。所有在线教程都没有显示如何将数据发送到另一个类,它们只是在GUI类中执行数据库代码。 我有一个错误,它无法看到数据和列,因为它们是在我的方法的一个不可访问的部分中声明和使用的。在我完成这些之后,我需要找到一种方法来将它传递给我的GUI类

  • 问题内容: 当我从数据库中检索数据时,我碰壁了。我设法将列名放入我的表中,这可以正常工作并且应该工作。 当我尝试添加行时发芽,我发现没有数据添加到我的tableview中,我试图从代表单个行的字符串数组中添加行。我不知道用户会用他的查询请求多少列以及如何大表是这样,所以我不能创建行对象和代表每一列的所有属性。 问题 是如何用从数据库中成功检索到的行填充String表中的行,并以String []的

  • 我习惯于使用Arraylist,下面您可以看到我为存储数据所做的尝试: 这就是我尝试过的,但遗憾的是,这并不奏效: 下面你可以找到我剩下的代码,但上面的一个应该足以让我清楚的想要做什么... } 我创建了Dao类,如下所示::- @DAO公共接口DeckBuilderDao{

  • series(string $value,[ string $categories]) string $value $config = ['path' => './tests']; ​ $fileObject = new \Vtiful\Kernel\Excel($config); ​ $fileObject = $fileObject->fileName('tutorial.xlsx'); $

  • factory 辅助函数 必须 使用 factory 方法来做数据填充,因为是框架提倡的,并且可以同时为测试代码服务。 运行效率 开发数据填充时,必须 特别注意 php artisan db:seed 的运行效率,否则随着项目的代码量越来越大,db:seed 的运行时间会变得越来越长,有些项目多达几分钟甚至几十分钟。 原则是: Keep it lighting speed. 只有当 db:seed