liquibase 相关问题

Liquibase是一个独立于数据库的开源库,用于跟踪,管理和应用数据库更改。它建立在一个简单的前提上:所有数据库更改都以人类可读但可跟踪的形式存储,并检入源代码控制。

MYSQL 函数失败 - 失败的 SQL: (1064)

这是我的 liquibase 变更日志: 这是我的 liquibase 变更日志: <changeSet author="user" id="1712203200334-1"> <sqlFile path="config/liquibase/IsValidCoordinatesFormat.sql"/> </changeSet> sql 文件: CREATE FUNCTION IsValidCoordinatesFormat(coordString VARCHAR(255)) RETURNS BOOLEAN DETERMINISTIC BEGIN DECLARE isValid BOOLEAN; DECLARE regex VARCHAR(255); SET isValid = FALSE; SET regex = '^(-?\\d+(\\.\\d+)?);(-?\\d+(\\.\\d+)?)$'; IF coordString REGEXP regex THEN SET isValid = TRUE; END IF; RETURN isValid; END; 这是我遇到的错误 Reason: liquibase.exception.DatabaseException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 12 [Failed SQL: (1064) CREATE FUNCTION IsValidCoordinatesFormat(coordString VARCHAR(255)) RETURNS BOOLEAN 2024-04-04 08:00:53 DETERMINISTIC 2024-04-04 08:00:53 BEGIN 2024-04-04 08:00:53 DECLARE isValid BOOLEAN; 2024-04-04 08:00:53 DECLARE regex VARCHAR(255); 2024-04-04 08:00:53 SET isValid = FALSE; 2024-04-04 08:00:53 2024-04-04 08:00:53 SET regex = '^(-?\\d+(\\.\\d+)?);(-?\\d+(\\.\\d+)?)$'; 2024-04-04 08:00:53 2024-04-04 08:00:53 IF coordString REGEXP regex THEN 2024-04-04 08:00:53 SET isValid = TRUE; 2024-04-04 08:00:53 END IF] SQL 语法对我来说看起来是正确的。是什么导致了这个问题? 你的代码大部分都是多余的。使用单语句函数代码,不需要改变分隔符: CREATE FUNCTION IsValidCoordinatesFormat(coordString VARCHAR(255)) RETURNS BOOLEAN DETERMINISTIC RETURN COALESCE(coordString REGEXP '^(-?\\d+(\\.\\d+)?);(-?\\d+(\\.\\d+)?)$', FALSE); 如果您保证 coordString 不会为 NULL,或者 NULL,因为在这种情况下函数输出对您来说是安全的,那么您可以删除 COALESCE()。

回答 1 投票 0

Oracle 中的 Liquibase 部署后脚本

我正在使用 .sql 文件作为 Liquibase 变更集。在预部署步骤中,我运行一些脚本,例如禁用 Oracle 作业等。当出现任何错误时,Liquibase 停止运行下一个脚本。 在...

回答 2 投票 0

设置 Liquibase Java 在类路径/jar 之外使用变更日志

我在项目中使用 Liquibase 和 Maven - v4.2.0。 我的更改日志位于文件系统上,而不是项目的 JAR 或类路径中。 我使用以下内容来建立我的对象: 液体...

回答 3 投票 0

无法使用 Liquibase 配置解析 Gradle 构建文件:表达式“main”无法作为函数调用

我对使用 Gradle 而不是 Maven 还比较陌生,但我认为它更适合 Kotlin 项目。 我正在使用 MySQL 数据库编写 Spring Boot 应用程序,并想要设置 Liquiba...

回答 1 投票 0

使用 Gradle 8 运行 Liquibase 4 会导致错误找不到参数 [] 的 getMain() 方法

我正在使用 Liquibase 4 和 Gradle 8 设置 Spring Boot 3 项目,无论我在 build.gradle 中配置 Liquibase 时如何尝试,在运行以下任何一个项目时,我总是会收到以下错误...

回答 1 投票 0

Liquibase 与 mvn liquibase:diff 不会生成 dropNotNullConstraint 或 addNotNullConstraint

我正在使用带有 spring boot 的 liquibase 插件来生成变更集。使用 mvn liquibase:diff 我生成了包含实体和数据库模式之间差异的变更集。

回答 1 投票 0

Gradle 约定插件中的 Liquibase 配置

我有一个多模块 Java / Gradle 项目,其中每个模块都有相同的配置,所以我想将其移动到约定插件作为预编译的脚本插件。问题是...

回答 1 投票 0

无法启动 quarkus 进行使用 H2 和 Liquibase 的测试。数据源“<default>”未配置。要解决此问题,请配置数据源 '<default>'

我正在通过测试来介绍我的新 Quarkus REST API 中的功能。我目前正在学习如何使用 Quarkus 开发微服务,并且正在尝试 Liquibase。该项目包括工作...

回答 1 投票 0

JOOQ 和 Liquibase SQL 语句语法错误

我想使用 Liquibase 迁移生成代码 公共类 JooqCodegen { 公共静态无效主(字符串[] args)抛出异常{ 数据库数据库=新数据库() .

回答 1 投票 0

Liquibase 校验和已更改,并在变更日志中包含标签

最初在我的 Spring Boot 项目中,我所有的 liquibase 迁移脚本都位于“migrations”文件夹中,changelog.xml 文件位于外部: - 资源 --- 数据库变更日志 ----- 迁移...

回答 1 投票 0

Liquibase diff 比较 hibernate 模型时没有发现任何差异,而将不同的包集传递给它:

在 build.gradle 中,我设置了 liquibase 配置来运行 liquibase gradle 插件的 diff 任务。 液体碱{ 活动 { 主要的 { 更改日志文件“$buildDir/

回答 1 投票 0

使用 MongoDB 将标签添加到 Liquidbase PRO 中的特定变更集

我有 数据库更改日志: - 更改集: id:add_game_interests 作者:蒂亚戈 运行:mongosh 变化: - 蒙戈文件: 数据库管理系统:

回答 1 投票 0

Liquibase 参数未从环境变量中读取变更日志

我试图从环境变量中获取一些参数到 liquibase_data.properties 中,这些参数读入我的更改日志文件中,但没有取得太大成功。 以下是我的liquibase_data.propert...

回答 1 投票 0

liquibase + spring:指定 liquibase-schema 和 default-schema 时,关系“xxx.databasechangeloglock”不存在

当不指定这两个属性时,它会起作用,并且所有表都在默认架构中创建。 但是当指定这2个属性时,就会出现此错误: 关系“xxx.databasechangelo...

回答 1 投票 0

如何在 liquibase SQL 命令中传递变量?

我正在尝试在启动 docker 之前使用 liquibase 执行一个简单的 sql(posgresql DB) 命令。 这是我的 liquibase 脚本“email-reset.xml”,它在我使用变量时不起作用(很难...

回答 3 投票 0

通过 .NET 执行时,GitHub Actions 中出现“错误:无法访问 jarfile”,但可以从命令行运行

我有一个数据库,其架构使用 Liquibase 进行管理。我有一个使用该数据库进行持久化的 .NET 应用程序。我有使用测试容器的集成测试。所以当这些测试运行时

回答 1 投票 0

Liquibase 禁用脚本的某些属性

我已将数据库从 Oracle 迁移到 Postgres。在 Oracle 中,我们在 liquibase 脚本中使用了表空间,但在我的新 Postgres 数据库中,我不想再使用这些表空间。是...

回答 1 投票 0

Liquibase 将 ZonedDateTime 映射为带时区的时间戳

我正在使用 mvn liquibase:diff 来生成带有我的 spring 实体和数据库之间差异的更改。 一切工作正常,除了我使用 ZonedDateTime 类型时。 MVN

回答 1 投票 0

使用 Liquibase、postgreSQL 和序列插入新数据

如果我的 id 是连续的,如何使用 Liquibase 为 PostgreSQL 进行插入。我尝试以下操作: 如果我的 id 是连续的,如何使用 Liquibase 为 PostgreSQL 进行插入。我尝试以下方法: <changeSet author="rparente" id="service-1.1-2019-01-09-01"> <insert tableName="tenant"> <column name="id"defaultValueSequenceNext="hibernate_sequence"/> <column name="description" value="Prueba"/> <column name="name" value="antel"/> <column name="service_id" value="antel"/> </insert> </changeSet> 我尝试用 <changeSet author="rparente" id="service-1.1-2019-01-09-01"> <insert tableName="tenant"> <column name="id" value="nextval('hibernate_sequence')"/> <column name="description" value="Prueba"/> <column name="name" value="antel"/> <column name="service_id" value="antel"/> </insert> </changeSet> 错误是: 错误:“id”列中的空值违反了非空约束 我找到了使用序列(无默认)id 在 Postgres 中插入数据的解决方案 <changeSet author="author_name" id="service-1.1-2019-01-09-01"> <insert tableName="tenant"> <column name="id" valueSequenceNext="name_sequence"/> <column name="description" value="TEST"/> <column name="name" value="test"/> <column name="service_id" value="testl"/> <column name="status" value="ACTIVE"/> </insert> </changeSet> 查看 ColumnConfig 文档。您应该能够设置 valueComputed 属性并在其中调用 Postgres 函数: <column name="id" valueComputed="nextval('hibernate_sequence')"/> 对于我来说,我必须先创建一个序列,然后使用它。 <changeSet> <createSequence sequenceName="runtime_name_seq" dataType="bigint" incrementBy="1" maxValue="10000" minValue="1" startValue="1"/> </changeSet> <changeSet> <createTable tableName="runtime_name"> <column name="id" type="INTEGER" defaultValueComputed="nextval('runtime_name_seq')"> <constraints nullable="false" primaryKey="true" primaryKeyName="pk_runtime_name"/> </column> </createTable> </changeSet> 这将通过 Liquibase 创建 SQL(我正在使用 v3.8.1) CREATE TABLE public.runtime_name ( index INTEGER DEFAULT nextval('runtime_name_seq') NOT NULL ) 使用 liquibase 现在的方法是 defaultValueSequenceNext <createSequence schemaName="YOUR_SCHEMA" sequenceName="YOUR_SEQUENCE" dataType="bigint" startValue="1" incrementBy="1" cycle="false"/> <createTable schemaName="YOUR_SCHEMA" tableName="YOUR_TABLE"> <column name="ID" type="bigint" defaultValueSequenceNext="YOUR_SEQUENCE"> <constraints nullable="false" primaryKey="true" primaryKeyName="PK_YOUR_TABLE"/> </column> </createTable> 对于插入,就像上面所说的<column name="id" valueSequenceNext="YOUR_SEQUENCE"/>那样https://stackoverflow.com/users/3499894/renzo-parente

回答 4 投票 0

Maven Liquibase 项目可以打印 sql 执行日志,例如“表创建成功”?

我有一个客户要求我们在我们的maven Liquibase项目中应用更改,这样我们就可以看到打印出所有plsql部署的执行输出,这样我们就可以观察到什么对象了

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.