关键词:
【中文标题】通过 maven liquibase 插件填充时,Hsqldb 没有数据【英文标题】:Hsqldb has no data when populated via maven liquibase plugin 【发布时间】:2013-04-24 03:25:32 【问题描述】:我已创建架构并通过 Maven liquibase 插件填充它:
<plugin>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-maven-plugin</artifactId>
<version>2.0.5</version>
<configuration>
<propertyFile>src/main/resources/db/config/db.config.properties</propertyFile>
<changeLogFile>src/main/resources/db/changelog/db.changelog-master.xml</changeLogFile>
</configuration>
</plugin>
属性文件:
driver: org.hsqldb.jdbcDriver
#HSQLDB Embedded in file
url: jdbc:hsqldb:file:src/main/resources/db/hsqldb/dataFile
username: SA
password:
正如我在调用 mvn liquibase:update
时在输出中看到的:
[INFO] Executing on Database: jdbc:hsqldb:file:src/main/resources/db/hsqldb/dataFile
INFO 24.04.13 10:00:liquibase: Successfully acquired change log lock
INFO 24.04.13 10:00:liquibase: Creating database history table with name: DATABASECHANGELOG
INFO 24.04.13 10:00:liquibase: Reading from DATABASECHANGELOG
INFO 24.04.13 10:00:liquibase: Reading from DATABASECHANGELOG
INFO 24.04.13 10:00:liquibase: ChangeSet src/main/resources/db/changelog/db.changelog-1.0.xml::1::sav ran successfully in 7ms
INFO 24.04.13 10:00:liquibase: ChangeSet src/main/resources/db/changelog/db.changelog-1.0.xml::2::sav ran successfully in 3ms
INFO 24.04.13 10:00:liquibase: Successfully released change log lock
INFO 24.04.13 10:00:liquibase: Successfully released change log lock
db.changelog-master.xml
包含:
<include file="src/main/resources/db/changelog/db.changelog-1.0.xml"/>
db.changelog-1.0.xml
包含:
<changeSet id="1" author="sav">
<createTable tableName="testTable">
<column name="id" type="int">
<constraints primaryKey="true" nullable="false"/>
</column>
<column name="name" type="varchar(50)">
<constraints nullable="false"/>
</column>
<column name="active" type="boolean" defaultValueBoolean="true"/>
</createTable>
</changeSet>
<changeSet id="2" author="sav">
<insert tableName="testTable">
<column name="id" value="1"/>
<column name="name" value="First String"/>
</insert>
<insert tableName="testTable">
<column name="id" value="2"/>
<column name="name" value="Second String"/>
<column name="active" value="false"/>
</insert>
</changeSet>
似乎一切正常。现在我要去src/main/resources/db/hsqldb/
文件夹并看到三个文件:
dataFile.log
dataFile.properties
dataFile.script
但我在dataFile.script
中没有看到CREATE TABLE testTable
DDL 语句。
接下来在 Intelli IDEA 中配置数据源插件(设置 jdbc hsql 驱动程序,url:jdbc:hsqldb:file:/src/main/resources/db/hsqldb/dataFile
,用户:sa)。连接它,调用查询:
SELECT * FROM INFORMATION_SCHEMA.SYSTEM_TABLES;
-
我看不到我尝试创建的表。
每个表的 hsqldb_type 字段的值为 MEMORY。我希望它是类似的文件。
有什么想法吗?:)
PS: 1. Maven仓库返回HSQLDB作为第一个搜索结果,其最新版本为1.8.0.10。实际上,我必须使用 HSQLDB DATABASE 及其 2.2.9 版本。它解决了创建表的问题。 2. 我必须使用文件的绝对路径和 ';ifexists=true' 属性来连接到 IDEA 数据源插件中的现有数据库。因此,我在属性文件中的 url 连接字符串与插件中使用的不同。
【问题讨论】:
【参考方案1】:你需要注意文件路径的使用:
这是一个相对路径:
driver: org.hsqldb.jdbcDriver
#HSQLDB Embedded in file
url: jdbc:hsqldb:file:src/main/resources/db/hsqldb/dataFile
这是当前驱动器中的绝对路径:
Next in Intelli IDEA I configure datasource plugin (set jdbc hsql driver, url: jdbc:hsqldb:file:/src/main/resources/db/hsqldb/dataFile, user: sa )
尝试使用绝对路径。
除此之外,在您尝试检查现有数据库中的内容时,通过将 ;ifexists=true
添加到连接 URL 来明确要求数据库存在。
由于我们不确定 Liquibase 是否正确关闭了数据库,您可以在 Liquibase 连接 URL 中添加一个属性,以确保完整写入数据;hsqldb.write_delay=false
。我们假设您为此属性使用 HSQLDB 2.x。
【讨论】:
【参考方案2】:使用 HSQLDB 1.8.x,liquibase catalog 应该设置为 null
。
我们不能强制目录为空,因为方法AbstractJdbcDatabase.correctSchema()
不应该设置catalog=schema
,如果supportCatalogs()
返回false。
我会为此发布一个问题。
【讨论】:
Liquibase maven:spring-boot启动时找不到更改日志位置
】Liquibasemaven:spring-boot启动时找不到更改日志位置【英文标题】:Liquibasemaven:Cannotfindchangeloglocationwhenspring-bootstarts【发布时间】:2018-12-1416:38:01【问题描述】:我的liquibasemaven插件配置是:<plugin><groupId>org.liquibase</grou... 查看详情
如何在 Spring Boot 中配置 Maven Liquibase 插件?
】如何在SpringBoot中配置MavenLiquibase插件?【英文标题】:HowcanIconfigureMavenLiquibaseplugininSpringBoot?【发布时间】:2019-08-3023:35:24【问题描述】:我正在学习Liquibase和SpringBoot,所以我用SpringInitializr创建了一个简单的项目。在我添加的... 查看详情
无法通过我的 spring maven 项目集成和运行 liquibase
】无法通过我的springmaven项目集成和运行liquibase【英文标题】:Notabletointegrateandrunliquibasethroughmyspringmavenproject【发布时间】:2017-10-1418:59:39【问题描述】:我正在尝试通过基于弹簧的maven项目运行mvnliquibase:update。但我看到以下错... 查看详情
liquibase-maven-plugin 和 sqlFile
】liquibase-maven-plugin和sqlFile【英文标题】:liquibase-maven-pluginandsqlFile【发布时间】:2016-09-2305:53:45【问题描述】:我正在尝试使用liquibase-maven-plugin来运行我的数据库更新。我有以下插件配置:<configuration><username>$dba.usernam... 查看详情
liquibase-maven-plugin 与 testcontainers 的使用
】liquibase-maven-plugin与testcontainers的使用【英文标题】:Theusageofliquibase-maven-pluginwithtestcontainers【发布时间】:2021-12-0100:44:29【问题描述】:假设我有这个插件配置(使用hsqldb):<plugin><groupId>org.liquibase</groupId><artif... 查看详情
Liquibase 和 JPA 注释实体
】Liquibase和JPA注释实体【英文标题】:LiquibaseandJPAannotatedentities【发布时间】:2015-01-1014:17:03【问题描述】:我正在尝试将Liquibase与JPA注释一起使用,但我似乎无法正常工作。我的项目中有一个没有表和一个JPA实体的干净数据库... 查看详情
无法让 liquibase-hibernate 插件与 gradle 一起工作
】无法让liquibase-hibernate插件与gradle一起工作【英文标题】:Unabletogetliquibase-hibernatepluginworkwithgradle【发布时间】:2018-08-1913:38:13【问题描述】:在尝试将liquibase:hibernate插件与spring-boot:gradle:postgres集成时,我在运行gradlediff命令时... 查看详情
无法与 liquibase gradle 插件生成差异
】无法与liquibasegradle插件生成差异【英文标题】:Unabletogeneratedifferencefromliquibasegradleplugin【发布时间】:2016-06-1311:38:56【问题描述】:我正在尝试使用MYSQL数据库在现有SpringBoot项目中实现liquibase。我希望能够生成更改集,指定实... 查看详情
Liquibase Maven 无法读取 changeLogFile
】LiquibaseMaven无法读取changeLogFile【英文标题】:LiquibaseMavencan\'treadchangeLogFile【发布时间】:2017-08-1001:11:45【问题描述】:根据我的Filestructure我遇到了错误liquibase.exception.SetupException:文件:/src/main/liquibase/changes/000-initial-schema.xml... 查看详情
Liquibase 与数据库交互
】Liquibase与数据库交互【英文标题】:LiquibasewithDatabaseinteraction【发布时间】:2015-10-2008:48:31【问题描述】:我正在研究Liquibase以将数据库与Spring集成。我想问:是否有任何插件或类似的东西用于通过liquibase自动保存数据库中的... 查看详情
在 Liquibase 4.0 中删除了通过绝对路径指定文件
】在Liquibase4.0中删除了通过绝对路径指定文件【英文标题】:SpecifyingfilesbyabsolutepathwasremovedinLiquibase4.0【发布时间】:2021-10-2218:08:42【问题描述】:我在运行SpringBoot应用程序时收到以下liquibase错误:。请使用相对路径或在类路径... 查看详情
在生产环境中执行 liquibase 更新
】在生产环境中执行liquibase更新【英文标题】:Executeliquibaseupdateinproductionenvironment【发布时间】:2013-11-2901:03:00【问题描述】:我有一个JavaMaven项目。我正在使用liquibase来更新数据库。在本地,要更新我的数据库,我只是在命令... 查看详情
如何修复“在当前项目和插件组中找不到前缀'liquibase'的插件”
】如何修复“在当前项目和插件组中找不到前缀\\\'liquibase\\\'的插件”【英文标题】:Howtofix"Nopluginfoundforprefix\'liquibase\'inthecurrentprojectandintheplugingroups"如何修复“在当前项目和插件组中找不到前缀\'liquibase\'的插件”【发... 查看详情
Surefire Maven 插件:“通过直接写入分叉 JVM 中的本机流来破坏 STDOUT”
】SurefireMaven插件:“通过直接写入分叉JVM中的本机流来破坏STDOUT”【英文标题】:SurefireMavenplugin:"CorruptedSTDOUTbydirectlywritingtonativestreaminforkedJVM"【发布时间】:2019-08-1120:40:45【问题描述】:我的JUnit测试在通过Maven和Surefire... 查看详情
Liquibase 看不到实体的变化
】Liquibase看不到实体的变化【英文标题】:Liquibasedonotseechangesinentities【发布时间】:2015-01-2309:16:05【问题描述】:我正在尝试使用liquibase配置简单的maven项目。我有很多关于liquibase-maven-plugin和liquibase-hibernate4版本的问题,它们不... 查看详情
从自定义 mojo 访问 maven 插件的运行时配置的最佳方式?
...的方法是什么?【问题讨论】:【参考方案1】:您可以通过以下步骤获取当前 查看详情
从 databasechangelog 读取 Liquibase 需要很长时间
】从databasechangelog读取Liquibase需要很长时间【英文标题】:Liquibasereadingfromdatabasechangelogtakesalongtime【发布时间】:2012-06-1312:14:00【问题描述】:有没有什么方法可以加快liquibase回滚和更新操作的maven任务?我现在在数据库中有大... 查看详情
编译插件时:maven 报错
】编译插件时:maven报错【英文标题】:Whencompilingplugins:maventhrowsanerror【发布时间】:2021-11-2710:50:20【问题描述】:编译插件时:maven抛出错误Failedtoexecutegoalorg.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile(default-compile)onprojectuser-lib 查看详情