- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 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/
我正在使用 liquibase-gradle-plugin 和 Groovy DSL 在我的数据库中应用变更集。我已经根据 documentation 在 gradle 脚本中进行了必要的配置的插件。
我是一名优秀的程序员,十分优秀!