삽질 [에러 & 오류들 정리한 잡동사니] 본문

백앤드 개발일지

삽질 [에러 & 오류들 정리한 잡동사니]

giron 2021. 8. 11. 22:42
728x90

개발을 하다 보면 에러나 오류가 무수히 많이 발생하고 매번 블로그들 뒤져보면서 찾기 불편해서 이곳에 정리해두려고 한다.

계속 수정해가면서 이 글에 기록할 생각이므로 에러나 오류가 발생하면 여기서 찾아보자!


[포트 죽이기]

  • (power shell) netstat -ano 
  • taskkill /f /pid [pid]

[Parameter value [1] did not match expected type: ]

  • spring data jpa를 통해 레포지토리 작성할 때, 잘못 작성할때 발생! 쿼리문 주의

[CICD](젠킨스랑 travis)(배포)

#28번 시도 끝에 오류 발견;;;;

[2021.08.12] CI CD 하다가 화병 날 뻔했는데 드디어 오류 찾아서 뿌듯함에 사진까지 ㅎㅎㅎ..;;; 

이런 오류가 마구 나와서 gralew build 할 때, 문제인가 하고 한참 찾았는데 gitignore에 파일을 올려둬서 깃 레포가 그걸 못 찾아서 build가 그냥 안된 거였음..; 인텔리제이에선 돌아가는데 왜 자꾸 안 될까 생각했는데 원격이랑 로컬이 다르니깐 그런 거였다..; 진짜 이틀 날렸지만 어쨌든 허무하지만 어쩃든 기분은 좋다..^^


[2021.08.12] 도커 빌드할 때, {dockerHubId}/{repo} 형식으로 만들어야 에러 안 난다.!^^(도커)

sudo docker build -t {dockerId}/{repo} .
sudo docker push {dockerId}/{repo}

 

[2021.08.12] 도커 이미지 만들 때, 아래처럼 소문자로만 작성해야 한다..!(도커)

sudo docker build -t gyuchool/repo .

 

[2021.08.12] 글 쓴 지 얼마나 됐다고 또 에러한테 맞고 왔다. (배포)

진짜 왜 나한테만 이런가 싶어서 한참을 찾아봤다... 에러를 봐도 2개 파일일 땐 경로로 전달된다 이 말인데 분명 경로 jar파일 하나인데라고 진짜 나 자신을 너무 믿었다...

이 plain.jar는 뭐하는 놈이고 언제 생겼을까? ^^ 구글링해도 깨끗하다.. 나중에 다시 찾아봐야겠다.

두번 옮기면 된다.

 


[2021.09.01](DB)

디비 분명 맞았는데 연결이 계속 안 되었다..  localhost에 port:3306 딱 2개만 설정하면 되었는데 갑자기 안되었다.

yml파일엔 url에는 username과 password 올바르게 입력되어 있었고, url: 'jdbc:mysql://127.0.0.1:3306/{project}?serverTimezone=Asia/Seoul&charset=UTF-8' 이렇게 되어있어도 연결이 잘되었다.

 

원인은 도커 compose를 실행 안 시켰던 거다 ㅋㅋ... docker-compose up -d 자꾸 까먹지 말고.,, 실행하자!!

 


[2021-09-03](DB)

오랜만에 H2 DB사용하는데 사용법을 까먹어서 한참 구글링했다...ㅋ

h2 db 처음 만들때는 jdbc:h2:~/{만들 이름} 으로 처음에 만들고 시작해야한다...

그 후에 jdbc:h2:tcp://localhost/~/{만든 이름} 으로 하면 된다.

만약 H2 디비를 실행 안하고 돌리면

java.lang.IllegalStateException: Failed to load ApplicationContext
...
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
...

이런 에러가 나올것이다. 그러면 아 h2를 안켰구나 하고 켜주면 된다.


[2021-09-06](테스트코트)

테스트코드에서 @Transactional을 걸어도 더티체크가 안될 때가 있다. 그럴땐 플러시를 해주자!!!

테스트코드는 어차피 롤백될거라서 업데이트 쿼리를 안날려준다고 한다. 그래서 직접 플러시를 날려줘야 업데이트 쿼리가 나간다!!

 


위와 같은 테이블을 jpa에서 구현할 때

@Entity
@Table(
    uniqueConstraints = {
        @UniqueConstraint(columnNames = {"source_id", "target_id"})
    }
)
public class Follow {

    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "source_id")
    private User source;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "target_id")
    private User target;

    protected Follow() {
    }

    public Follow(User source, User target) {
        validateDifferentSourceTarget(source, target);
        this.source = source;
        this.target = target;
    }

    private void validateDifferentSourceTarget(User source, User target) {
        if (source.equals(target)) {
            throw new SameSourceTargetUserException();
        }
    }

equalsAnd HashCode구현하는 법!!!!!!!!!!!

@Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        Follow follow = (Follow) o;
        return Objects.equals(getSource(), follow.getSource())
            && Objects.equals(getTarget(), follow.getTarget());
    }

    @Override
    public int hashCode() {
        return Objects.hash(getSource(), getTarget());
    }
728x90
Comments