Jooq native 쿼리가 연결 정보를 사용하지 않습니다.
통합 테스트에서 dslContext를 구성했습니다.
String connectionURL = mariaDBContainer.getJdbcUrl();
String username = mariaDBContainer.getUsername();
String pw = mariaDBContainer.getPassword();
DSLContext dslContext = DSL.using(DriverManager.getConnection(connectionURL, username, pw), SQLDialect.MARIADB);
그리고 삽입문을 썼습니다.
dslContext
.insertInto(ATTACHMENT, ATTACHMENT.ID_ATTACHMENT)
.values("abc", 999L)
.execute();
꽤 잘 작동하는군요.전혀 문제없습니다.
따라서 많은 데이터를 추가해야 하기 때문에 코드베이스를 입력하는 것이 더 이상 필요하지 않습니다.그래서 저는 삽입물을 파일로 이동하여 테스트 내에서 읽었습니다.
Files.readAllLines(Paths.get("src/test/resources/attachments.sql"), StandardCharsets.UTF_8)
.forEach(queryValue -> dslContext.query(queryValue).execute());
DBeaver에서 생성된 삽입문을 파일에 복사하여 붙여넣고 나머지는 jooq가 수행할 수 있기 때문에 이것은 저에게 매우 유용합니다.sql 파일의 내용은 다음과 같습니다.
INSERT INTO database.ATTACHMENT (ID_ATTACHMENT, ID_ATTACHMENT_DATA_REF)
VALUES('iuha99assU-eZ8ijZaHkUQ', 24719);
INSERT INTO database.ATTACHMENT (ID_ATTACHMENT, ID_ATTACHMENT_DATA_REF)
VALUES('iuha99assU-OPoias98s7', 27085);
....
하지만! 연결 문제가 발생했습니다. 성공적으로 실행된 dslContext.insertIn..에서 볼 수 있듯이 내 dslContext가 잘 구성되어 있기 때문입니다.명령을 실행합니다.오류:
org.mariadb.jdbc.internal.util.exceptions로 인해 발생합니다.MariaDbSqlException: org.mariadb.jdbc.internal.util.exceptions의 'attachment' 테이블에 대해 'test'@'172.17.0.1' 사용자에게 INSERT 명령이 거부되었습니다.org.mariadb.jdbc.internal.protocol의 MariaDbSqlException.of(MariaDbSqlException.java:34).추상 쿼리 프로토콜입니다.예외.쿼리 사용(AbstractQuery Protocol).java:java)가 org.jbc.jdbc.internal.java에 있습니다.추상 쿼리 프로토콜입니다.예외.쿼리 사용(AbstractQuery Protocol).java:java)가 org.jbc.jdbc.internal.java에 있습니다.추상 쿼리 프로토콜입니다.executeQuery(AbstractQueryProtocol).java:321)이(가) org.javadb.jdbc에 있습니다.ClientSide Preparated Statement.execute내부(ClientSidePreparedStatement.java:220) ... 72개 이상의 원인: java.sql.SQL 예외: org.mariadb.jdbc.internal.protocol의 'attachment' 테이블에 대해 'test'@'172.17.0.1 사용자에게 INSERT 명령이 거부되었습니다.AbstractQueryProtocol.readErrorPacket(AbstractQueryProtocol)입니다.java:1694)가 org.javadb.jdbc.internal.java에 있습니다.AbstractQueryProtocol.readPacket(AbstractQueryProtocol)입니다.java:1556)가 org.javadb.jdbc.internal.java에 있습니다.AbstractQueryProtocol.getResult(AbstractQueryProtocol).java:1519)가 org.javadb.jdbc.internal.java에 있습니다.추상 쿼리 프로토콜입니다.executeQuery(AbstractQueryProtocol).java:318) ... 73개 이상
dslContext에 .query()에 대해 별도의 구성이 있는 이유는 무엇입니까?아니면 제가 뭔가 오해한 건가요?당신의 의견에 감사드립니다.
그래서, 저는 당황스럽게도, 해결책은 매우 간단합니다.방금 제 sql 스크립트에서 "데이터베이스"를 제거했는데 작동합니다.이 방향을 알려주신 루카스 에더에게 감사드립니다.
언급URL : https://stackoverflow.com/questions/69538894/jooq-native-query-doesnt-use-connection-information
'sourcecode' 카테고리의 다른 글
GCC가 .cpp 파일을 C로 컴파일하도록 강제 적용 (0) | 2023.07.03 |
---|---|
로그를 역순으로 가져오는 방법은 무엇입니까? (0) | 2023.07.03 |
T-SQL에 int가 아닌 숫자에 대한 이유가 있습니까? (0) | 2023.07.03 |
Angular 2 퀵스타트 404 GET /app/main.js (0) | 2023.07.03 |
postgresql - 텍스트 필드 내 문자열의 모든 인스턴스를 바꿉니다. (0) | 2023.07.03 |