728x90
반응형

IT 156

JPA Hibernate 오류 : could not extract resultset

개발 디비에서 잘 돌아가던 코드 테스트 디비로 연결하고 돌리니 안된다! findById로 엔티티 하나를 가져왔는데 org.hibernate.exception.SQLGrammarException: could not extract ResultSet 이렇게 뜨면서 id 빼고 모든게 null값으로 들어온다.... 원인은 @Entity 클래스에서 추가된 컬럼들이 있었는데 이게 개발 디비에만 있고 테스트 디비에는 생성되지 않았기 때문에 코드와 실제 디비가 서로 맞지 않아서 뜨는 에러였다 application.yaml 파일이 개발버전에서는 ddl=true로 되어있어 자동으로 스키마가 변경됐지만 테스트버전에서는 false로 되어있어서 생긴 일이었다

you aren't using a compiler supported by lombok (롬복 getter 안될때)

you aren't using a compiler supported by lombok Your processor is: com.sun.proxy.$Proxy26 java: cannot find symbol method getStores ... 멀쩡하게 되던 코드가 갑자기 저런걸 띄우면서 빌드가 안됨 @Data, @Getter 어노테이션을 달아놨는데 겟메소드가 없다고 자꾸.... 컴파일러가 lombok을 못써서 그런거라고 함 몇가지 체크방법이 있는데 컴파일러 vm 옵션에 아래 옵션 넣어서 됨 -Djps.track.ap.dependencies=false 참고 https://stackoverflow.com/questions/65128763/java-you-arent-using-a-compiler-support..

mysql 원격접속시 public key retrieval is not allowed 오류

이놈의 db 원격접속 설정은 할때마다.... 한번에 된 적이 없다 이번엔 mariadb가 아니고 mysql이다 % 호스트에서 접속 가능한 계정 만들고 privilege 설정도 해주고 flush privilege도 해주고 bind-address도 0.0.0.0으로 열어주고 iptables에서 3306 포트 열어주고 클라우드 콘솔에서 네트워크 규칙 3306 포트도 추가해줬는데 DBeaver로 연결하려고 하니 뜨는 에러 dbeaver communications link failure 알고보니 mariadb와 달리 mysql은 conf 파일 변경 후 바로 적용되는게 아니라 서비스 리스타트를 해줘야 한다. (아마도? mariadb와 다른게 맞을듯? 마리아는 리스타트 한적이 없는걸로 기억하는데 아닐수도?!) bin..

IT/db 2022.11.16

nginx 웹소켓 proxy_pass 및 timeout 설정

기존 api 로케이션을 아래처럼 설정해뒀다 server{ listen 80; allow all; location ~^/api/v1 { rewrite ^/api/v1(.*)$ $1 break; proxy_pass http://127.0.0.1:7000; proxy_redirect off; proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } http://1.1.1.1/api/v1/getUser와 같이 들어온 api 요청을..

IT/서버 2022.10.18

스프링 부트 jar 파일 윈도우 cmd에서 특정 프로필로 실행하기

윈도우에서 jar 파일을 실행할때는 cmd창에서 그냥 java -jar 파일명.jar 하면 되는데 스프링 yaml 파일에서 나눈 특정 프로필로 돌리려면 리눅스랑 쪼끔 다르다. 바로 따옴표를 해주는 것..... java "-Dspring.profiles.active=dev" -jar myProject-0.0.1-SNAPSHOT.jar 이러면 잘 돌아간다. 그리고 리눅스 쉘과 달리 끌때는 ctrl+c 같은걸로 안되고 무조건 pid 찾아서 죽여줘야 한다. # 8081 포트로 도는 프로세스 찾기 netstat -ano | findstr 8081 # 찾은 pid 죽이기 taskkill /f /pid 123456

attempting to assign weaker access privilege (private, public)

접근 제한자가 맞지 않아서 나는 경고이다. public class MyServiceImpl implements MyService { @Override public String first(){ ... second(); } private void second(){ // 여기서 빨간줄이 뜸 : attempting to assign weaker access privilege ... } } 원래 public이었던 second()를 private으로 변경하려고 하니 인텔리제이가 빨간 줄을 띄워댄다. 하지만 나는 public 메서드에서 private 메서드를 호출하려고 하는 건데 왜 이러는걸까? 문제는 해당 클래스가 implements하고 있는 MyService에 있었다. public interface OCIServ..

서블릿으로 받은 MultipartFile에 대한 NoSuchFileException

MultipartFile의 임시적인 속성 멀티파트파일은 임시 파일로 생성되었다가 해당 메소드가 종료되면 사라진다고 한다! (이걸 몰라서 얼마나 삽질을 한 건지...) 때문에 @Async 메소드로 달아서 처리하거나 다른 pubic 메서드로 넘겨서 처리하려고 하면 파일을 찾지 못하는 경우가 발생하는 것. 1) async로 넘겨야 할 경우 물리적으로 복사해둔 후 메소드가 끝날때 지워주는 방식을 통해 영속적으로 사용할 수 있고 2) 같은 클래스 내에서 호출하여 파일을 가공하는 경우 private 메소드로 사용하면 된다. https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/multipart/Multipart..

servlet으로 받은 multipartfile의 위치 지정

public File convert(MultipartFile file) throws IOException { File convFile = new File(URLDecoder.decode(file.getOriginalFilename(), "UTF-8")); convFile.createNewFile(); FileOutputStream fos = new FileOutputStream(convFile); fos.write(file.getBytes()); fos.close(); return convFile; } MultipartFile을 File로 변환하는 함수이다. 이때 fos.write(file.getBytes()) 에서 익셉션이 발생할 때가 있다. java.nio.file.NoSuchFileException..

413 Request Entity Too Large - 큰 용량의 파일을 전송하기

멀티파트로 파일을 넘겨받아서 스토리지에 업로드하려는데 작은 사이즈의 파일로는 테스트가 잘 되던 것이 용량이 큰 파일을 업로드하려고 하자 안된다. 413 Request Entity Too Large nginx에서 터진 것이다. 서버의 nginx 컨프 파일을 확인하자. nginx.conf server { # set client body size to 16M # client_max_body_size 1G; ... } 위와 같이 client_max_body_size를 1기가로 늘려줬다. 그리고 재시도를 하니 org.springframework.web.multipart.MaxUploadSizeExceededException : Maximum upload size exceeded; nested exception i..

자정마다 뜨는 MySQL Insteller 커맨드 창... (mysql installer is running in community mode)

어느날 밤 컴퓨터를 하다가 갑자기 시커먼 cmd 창이 번쩍 하고 사라지는 걸 봤다. 해킹이야 뭐야 하고 어리둥절해하다가 그냥 넘어갔는데 얼마 뒤에 또 같은 현상을 봤다. 너무 순식간에 지나가서 제대로 보지도 못하고 넘어가서 다음엔 무조건 캡쳐 떠야지 하고 벼르다가 오늘 자정에 또 뜬걸 잡았다. mysql installer is running in community mode MySQL 인스톨러..... 이거 뭐냐 이 노트북으로 디비 뭐 하는게 없는데... 예전에 언젠가 설치했거나 했던 모양이다. 작업 스케줄러 켜서 사용 안함으로 돌려놓자 만든 날짜를 보니 올해 3월 말이다. 이 애매한 날짜는 뭘까, 하고 캘린더를 뒤져보니... 방통대 데이터베이스 과목 출석수업을 하면서 실습을 따라한다고 설치했던 모양이다...

IT 2022.06.27
300x250
반응형