gpt4 book ai didi

mysql - Liquibase 无法传递 changeLogParameters

转载 作者:行者123 更新时间:2023-11-29 02:43:09 25 4
gpt4 key购买 nike

我正在使用 liquibase-gradle-plugin 和 Groovy DSL 在我的数据库中应用变更集。我已经根据 documentation 在 gradle 脚本中进行了必要的配置的插件。还有一个relevant issue它已被标记为 Closed 并且似乎正在为其他用户工作。但是,这些属性未在我的 SQL 文件中解析。我不确定我做错了什么。非常感谢任何指点。

build.gradle 的内容

buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath "org.liquibase:liquibase-gradle-plugin:1.2.4"
classpath group: 'mysql', name: 'mysql-connector-java', version: '6.0.6'
}
}

apply plugin: 'org.liquibase.gradle'
liquibase {
activities {
main {
changeLogFile "${project.projectDir}/src/main/db/changelogs.groovy"
changeLogParameters([
name : 'foo',
category: 'bar'
])
url "jdbc:mysql://localhost/test?nullNamePatternMatchesAll=true"
username 'test'
password 'test'
driver 'com.mysql.jdbc.Driver'
}
}
}

changelogs.groovy 的内容

databaseChangeLog(logicalFilePath: '/db/changelogs.groovy') {

changeSet(id: '1', author: 'abc', runAlways: true) {

comment 'Init.'
sqlFile(path: 'scripts/init.sql', relativeToChangelogFile: true)

}
}

init.sql 的内容

USE TEST;

DROP TABLE IF EXISTS MY_TABLE;

CREATE TABLE MY_TABLE(
NAME VARCHAR(100),
CATEGORY VARCHAR(100)
);

INSERT INTO MY_TABLE VALUES ('${name}', '${category}');

COMMIT;

SQL 输出:

mysql-sql> select * from  my_table;
+---------+-------------+
| NAME | CATEGORY |
+---------+-------------+
| ${name} | ${category} |
+---------+-------------+
1 row in set (0.00 sec)

在这里,我希望表格分别包含名称和类别的“foo”和“bar”。

代码可在 GitHub 上找到.

最佳答案

我最好的猜测是您需要替换这一行:

INSERT INTO MY_TABLE VALUES ('${name}', '${category}');

用这个:

INSERT INTO MY_TABLE VALUES ("${name}", "${category}");

不同之处在于第一行使用单引号转换为文字字符串。第二行使用双引号,允许字符串插值(又名字符串模板)。

这是来自 http://groovy-lang.org/style-guide.html 的引述

Also note the difference between single quotes and double quotes in Groovy: single quotes always create Java Strings, without interpolation of variables, whereas double quotes either create Java Strings or GStrings when interpolated variables are present.

在此处阅读有关单引号、双引号和三引号字符串的更多信息:http://docs.groovy-lang.org/latest/html/documentation/index.html#all-strings

关于mysql - Liquibase 无法传递 changeLogParameters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47294778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com