오늘 Astyanax 1.56.42로 마이그레이션하여 준비된 명령문의 withValues ()가 과 함께 제대로 작동하지 않는 것으로 나타났습니다. SQL SELECT ... WHERE ... IN). 내 ArrayList에 하나 개 이상의 항목이 포함되어있는 경우Astyanax parepared statement withvalues ()가 제대로 작동하지 않습니다.
ArrayList<ByteBuffer> uids = new ArrayList<ByteBuffer>(fileUids.size());
for (int i = 0; i < fileUids.size(); i++) {
uids.add(ByteBuffer.wrap(UUIDtoByteArray(fileUids.get(i)), 0, 16));
}
result = KEYSPACE.prepareQuery(CF_FILESYSTEM)
.withCql("SELECT * from files where file_uid in (?);")
.asPreparedStatement()
.withValues(uids)
.execute();
이 내가 뭘 잘못 오류
SEVERE: com.netflix.astyanax.connectionpool.exceptions.BadRequestException: BadRequestException: [host=hostname(hostname):9160, latency=5(5), attempts=1]InvalidRequestException(why:there were 1 markers(?) in CQL but 2 bound variables)
결과? 어떤 다른 방법으로 처리 할 수 있습니까 SQL SELECT ... WHERE ... IN() - 문 또는 버그를 찾았습니까?
안부 하나의 ?
아 스티 아낙 스에 크리스
이 해결 방법을 정확하게 수행했습니다. 하지만이 문제를 해결 방법으로 생각합니다. 어쩌면 Netflix는 최근 https://github.com/Netflix/astyanax/pull/360에 명시된대로 동작을 제한 할 수 있습니다. 새 버전이 출시되는대로 바로 사용해 보겠습니다. – Chris