我在使用 liquibase 更改 postgres 数据库中的列长度时遇到问题。
我有一个带有字段描述 varchar(300) 的表帐户。我想把它改成 varchar(2000)。
我在同一个文件中删除并重新创建了主键,所以我没有权限问题或架构/数据库名称或类似的东西。为了测试,我已经清除了数据表。
我在跑步
<changeSet author="liquibase" id="sample">
<modifyDataType
columnName="description"
newDataType="varchar(2000)"
schemaName="accountschema"
tableName="account"/>
</changeSet>
Run Code Online (Sandbox Code Playgroud)
我收到此错误文本,但我无法理解问题。该列的唯一约束是非空约束,我成功添加了一个单独的更改日志来删除此约束(忽略我不明白为什么这会影响扩展字段长度的事实)。
谁能指出我做错了什么?
什么地方出了错:
任务 ':db-management:update' 执行失败。
liquibase.exception.LiquibaseException:运行 Liquibase 时出现意外错误:解析 src/main/changelog/db.changelog-accountdb-1.1.xml 的第 37 行第 38 列时出错:cvc-complex-type.2.4.a:发现无效内容元素“修改数据类型”。'{" http://www.liquibase.org/xml/ns/dbchangelog/1.9 ":validCheckSum, " http://www.liquibase.org/xml/ns/dbchangelog/1.9 ":preConditions, " http 之一://www.liquibase.org/xml/ns/dbchangelog/1.9 ":tagDatabase, " http://www.liquibase.org/xml/ns/dbchangelog/1.9 ":comment, " http://www.liquibase .org/xml/ns/dbchangelog/1.9 ":createTable, " http://www.liquibase.org/xml/ns/dbchangelog/1.9 ":dropTable, "http://www.liquibase.org/xml/ns/dbchangelog/1.9 ":createView, " http://www.liquibase.org/xml/ns/dbchangelog/1.9 ":renameView, " http://www. liquibase.org/xml/ns/dbchangelog/1.9 ":dropView, " http://www.liquibase.org/xml/ns/dbchangelog/1.9 ":insert, " http://www.liquibase.org/xml/ ns/dbchangelog/1.9 ":addColumn, " http://www.liquibase.org/xml/ns/dbchangelog/1.9 ":sql, " http://www.liquibase.org/xml/ns/dbchangelog/1.9 " :createProcedure, " …
我正在对弹性搜索(1.7)进行一般搜索,除了我的帐号中有正斜杠之外,一切都很好.帐号字段不是id字段,并且是"not_analyzed".
如果我搜索一个帐号,例如AC/1234/A01,那么我会得到数千个结果,大概是因为它正在进行正则表达式搜索(?).
{
"query" : { "query_string" : {"query" : "AC/1234/A01"} }
}
Run Code Online (Sandbox Code Playgroud)
我可以通过完全匹配搜索获得我想要的结果
{
"query" : { "query_string" : {"query" : "\"AC/1234/A01\""} }
}
Run Code Online (Sandbox Code Playgroud)
这实际上给了我想要的结果,可能会将该法案作为备份选项(围绕所有"单词"搜索引号).但是,我在想,如果他们进行多字搜索,包括帐号,我会回到数千个结果,虽然我看不到该搜索的价值,但我想避免它发生.
基本上我有一个java应用程序查询弹性搜索,我想逃避在GUI中输入的所有正斜杠.
我的谷歌搜索告诉我
{
"query" : { "query_string" : {"query" : "AC\\/1234\\/A01"} }
}
Run Code Online (Sandbox Code Playgroud)
应该这样做,但它没有任何区别,查询有效,但我仍然得到数千个结果.
有人能指出我正确的方向吗?
我已经编写了一些代码(java / spring),该代码允许用户选择复选框,然后构建一个ElasticSearch查询。到目前为止,此方法一直运行良好,因为要求不同类别中的术语应为AND查询,因此可以遍历分层选择框以构建术语匹配(或查询),然后将它们组合并构建一个布尔词条查询
{
"bool" : {
"must" : [ {
"terms" : {
"field1" : [ "term1", "term2" ]
}
}, {
"terms" : {
"field2" : [ "term3" ]
}
} ]
}
Run Code Online (Sandbox Code Playgroud)
提出了一些顶级框或查询的新要求,因此在这些情况下,我将需要一些类似于
{
"query": {
"bool" : {
"must" : {
"terms" : { "field1" : ["term1"] , "field1" : ["term2"] }
}
}
}
Run Code Online (Sandbox Code Playgroud)
}
我认为这是不可能的(elasticSearch 2.4.1),因为出现错误
"type": "query_parsing_exception",
"reason": "[terms] query does not support multiple fields",...
Run Code Online (Sandbox Code Playgroud)
我猜我应该将其移至过滤器查询,但我想知道是否有人可以确认这是最简单,最有效的更改(在此阶段,我正在寻找更改最少的路径)?
我正在流上执行一些操作并返回一个数组列表.这工作没有问题,但我需要做最后一步,如果数组列表为空,添加一个元素(与options/nulls无关只是要求的一部分)我的方式有点笨重,我想知道它是否可以而是在流操作中完成?
public ArrayList<String> getArrayList () {
ArrayList<String> aL = setOfStrings.stream()
.filter(remove some)
.filter(remove some more)
.map(i -> createStringAbout(i))
.collect(Collectors.toCollection(ArrayList::new));
if (aL.size() < 1) {
aL.add("No items passed the test");
}
return aL;
}
Run Code Online (Sandbox Code Playgroud)
所以我真的想做
return set.stream()...
Run Code Online (Sandbox Code Playgroud)
这可能吗 ?
道歉可能是我用过的最糟糕的标题,但我无法想到如何说出来.
我正在调用一个方法table.getColData(COL_1),它返回一个泛型
public <T extends Object> List<T> getColData(final String col)
Run Code Online (Sandbox Code Playgroud)
我调用它两次并得到两个字符串列表.我想连接这些并最终得到这个 -
List<String> a = table.getColData(col1);
List<String> b = table.getColData(col2);
List <String> c = Stream.concat(a.stream(), b.stream()).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
我觉得这很好用.我找不到一种方法来避免2声明虽然没有得到错误,因为它concat认为它有一个非Strings 的对象列表(提示:更改类型的cto List<Object>)?
有没有一种简单的方法可以让它看起来更加精致?!
我想知道是否有一种优雅的方式来以一种方式设置数字的货币格式,但保持实际的数字格式在另一种方式.这是Java.基本上我是这样做的
NumberFormat format = NumberFormat.getCurrencyInstance(locale);
Run Code Online (Sandbox Code Playgroud)
这是很好的,除了我正在为英国用户编写一个系统,我的用户很不高兴,当显示(例如)欧元时,数字格式化为欧洲人会使用它.所以作为英国人的500,000欧元会写它显示为€500.000(即交换,for.).我打算将locale替换为locale.UK,但后来我将使用错误的货币符号!
我有几个脏的修复,但我想知道是否有一种优雅的方式来保持语言环境的货币符号与本地语言环境(locale.UK)数字格式.
我在SpringBoot应用程序中创建HighEndRestClient bean时遇到错误.我已经完成了一个测试'app',我检查了我可以实例化我想要的对象,然后拨打我想要的电话,现在我正在制作新的应用程序.
我在pom中有这些依赖项
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
<version>5.6.3</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>5.6.3</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我已经在配置类中编写了这个非常基本的代码,但是这个代码没有做太多
@Configuration
@PropertySource(value = "classpath:application.properties")
@EnableElasticsearchRepositories(basePackages = "com.indexbuilder.es.repo")
public class ElasticsearchConfiguration {
@Value("${elasticsearch.host}")
private String EsHost;
@Value("${elasticsearch.port}")
private int EsPort;
@Value("${elasticsearch.clustername}")
private String EsClusterName;
@Bean
public RestClientBuilder coreBuilder() throws Exception {
RestClientBuilder builder = RestClient.builder(new HttpHost("localhost", 9200, "http"));
builder.setMaxRetryTimeoutMillis(10000);
builder.setFailureListener(new RestClient.FailureListener() {
@Override
public void onFailure(HttpHost host) {
System.out.println("FAILURE !!!! FailureListener HAS WOKEN UP!!!! CREATYE A FAILURE LISTENER BEAN" );
}
});
return builder;
}
@Bean
public …Run Code Online (Sandbox Code Playgroud) 看了更多之后我意识到
\n\n让我困惑的是,maven 正在存储库中搜索这个文件,但没有找到它。我不\xe2\x80\x99不明白为什么不同的本地存储库(POM 文件中列出的 6 个存储库之一)应该是一个问题。
\n\n我的假设是问题出在正在发布的存储库的版本策略中。这肯定是错误所暗示的,但旧存储库也有发布策略,无论如何我\xe2\x80\x99m不存储快照在那里只是寻找它,因为它是存储在Maven Central上的依赖项的依赖项未找到\xe2\x80\x99。
\n\n有没有办法可以更改策略以允许搜索快照或阻止 Maven 在此存储库中搜索快照?
\n\n我们已将内部存储库从一台服务器移至另一台服务器,并将其从 2.14.9-01 升级到 3.12.1-01。
\n\n我们已经使用代理迁移了工件。我已经使用新的存储库构建了几个简单的项目,一切似乎都很好。
\n\n但是在一个应用程序上我收到此错误
\n\n[INFO] ------------------------------------------------------------------------\nDownloading: http://reposerver:8081/repository/releases/org/glassfish/javax.el/3.0.1-b06-SNAPSHOT/javax.el-3.0.1-b06-SNAPSHOT.pom\n\nDownloading: http://reposerver:8081/repository/releases/org/glassfish/javax.el/3.0.1-b07-SNAPSHOT/javax.el-3.0.1-b07-SNAPSHOT.pom\n\nDownloading: http://reposerver:8081/repository/releases/org/glassfish/javax.el/3.0.1-b08-SNAPSHOT/javax.el-3.0.1-b08-SNAPSHOT.pom\nRun Code Online (Sandbox Code Playgroud)\n\n...
\n\n[INFO] -----------------------------------------------------------------------\n[INFO] BUILD FAILURE\n[INFO] ------------------------------------------------------------------------\n\n[ERROR] Failed to execute goal on project : \nCould not resolve dependencies for project : \nFailed to collect dependencies at org.eclipse.jetty:jetty-\njsp:jar:9.2.19.v20160908 -> org.glassfish.web:javax.servlet.jsp:jar:2.3.2 -> \norg.glassfish:javax.el:jar:3.0.1-b06-SNAPSHOT: \n\nFailed to read artifact descriptor for org.glassfish:javax.el:jar:3.0.1-b06-SNAPSHOT: \nCould not transfer artifact org.glassfish:javax.el:pom:3.0.1-b06-SNAPSHOT from/to releases.new \n(http://reposerver:8081/repository/releases/): Failed to transfer …Run Code Online (Sandbox Code Playgroud) 我想在布尔可选值上做一个非常基本的if else.我想我遗漏了一些非常基本的东西
所以旧学校如果其他巢就是这样的
if (filterValue.isPresent()) {
if (filterValue.get()==true) {
method1();
} else {
method2();
}
} else {
method3();
}
Run Code Online (Sandbox Code Playgroud)
我尝试了2次替换的各种尝试
filterValue.map(o -> o.TRUE ? method1() : method2()).orElse(method3());
Run Code Online (Sandbox Code Playgroud)
和
filterValue.isPresent(filterValue.get().TRUE ? method1() : method2());
Run Code Online (Sandbox Code Playgroud)
并不能完全得到语法?
有人能指出我正确的方向吗?
我试图掌握Kotlin和函数式编程,但没有通过一个非常简单的练习就失败了。
我将对此进行一些修改,以使其不太明显是来自特定的在线课程,但我只是想真正地开始,而不是在愚弄任何人...
我正在处理2个收藏集
data class Pet(val name: String)
data class Household (
val pet: Pet,
...
)
data class District(
val allPets: Set<Pet>,
val allHouseholds: List<Household>,
...)
Run Code Online (Sandbox Code Playgroud)
我想找到所有不在家庭中的宠物。它必须作为Set返回,因为我已经获得此签名才能使用
fun Locality.findFeralPets(): Set<Pet> =
Run Code Online (Sandbox Code Playgroud)
我本来要执行过滤操作,但这会返回一个列表,但看不到如何将其转换为集合。谁能指出我正确的方向?过滤器很可能是完全错误的方法!
allPets.filter { pet -> pet.name != "Bob" }
Run Code Online (Sandbox Code Playgroud) 抱歉,这看起来很基本,但我错过了一些东西
我有一个方法签名覆盖
fun doSomeWork (range: IntProgression, j: Int): List<Cell>{
Run Code Online (Sandbox Code Playgroud)
我想迭代范围,无论它是什么(可以是向上或向下,比如 1 到 4 或 4 到 1)。该范围本身似乎有效,所以在我的 4 到 1 示例中
println (range.first.toString() + " to " + range.last.toString() + ", step = " + range.step)
Run Code Online (Sandbox Code Playgroud)
打印“4 比 1,步长 = 1”
但我似乎无法迭代范围?我尝试过一些事情
for (i in range) {
println ("range: $i)"
}
Run Code Online (Sandbox Code Playgroud)
进而
for (i in range.first until range.last step range.step){
println ("Loop de loop $i")
}
Run Code Online (Sandbox Code Playgroud)
(虽然写这个问题时我注意到它是步骤1而不是-1,这可能是这里的问题?但因为我希望能够在任一方向的范围内通过,所以我没有检查)
进而
range.forEach { println ("range foreach") }
Run Code Online (Sandbox Code Playgroud)
它们都不会打印任何内容,但它们不会抛出错误,因此之后的任何代码都可以正常运行。
谁能指出为什么我无法完成这项入门级任务?!