반응형
하늘과 바람과 별과 코드
최신글
-
[mysql] ERROR 2002 cant connect through socket — `-h localhost` 는 TCP 가 아니라 유닉스 소켓 1. 오류 설명: ERROR 2002 cant connect through socketERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'-h localhost 는 TCP 가 아니라 유닉스 소켓 파일을 씁니다. 그 파일이 없으면 서버가 옆에 떠 있어도 못 붙습니다.2. 오류 예시첫 줄이 답의 절반입니다 — 이 컨테이너에는 그 소켓 파일이 아예 없습니다.MySQL 클라이언트는 localhost 를 특별하게 다룹니다.-h 에 적은 것어떻게 붙나localhost유닉스 소켓 파일 (/var/run/mysqld/mysqld.sock)127.0.0.1TCPdb, 10.0.0.5TCPloca..
-
[java] error: class Greeter is public, should be — `public` 클래스는 파일 이름과 이름이 같아야 합니다 1. 오류 설명: error: class Greeter is public, should beerror: class Greeter is public, should be declared in a file named Greeter.javapublic 클래스는 파일 이름과 이름이 같아야 합니다. public 이 아니면 자유롭습니다.2. 오류 예시필요한 파일 이름을 그대로 알려 줍니다 — Greeter.java.자바는 public 타입 하나를 파일 이름으로 찾습니다. com.example.Greeter 를 쓰겠다고 적으면 컴파일러는 com/example/Greeter.java 를 찾아갑니다. 이름이 다르면 못 찾습니다.한 파일에 public 은 하나입니다. 둘을 적으면 둘 다 파일 이름과 같을 수 없으므로 역시 ..
-
[go] build constraints exclude all Go files in — 빌드 태그나 파일 이름 규칙이 이 환경에 맞는 파일을 전부 1. 오류 설명: build constraints exclude all Go files inbuild constraints exclude all Go files in /app빌드 태그나 파일 이름 규칙이 이 환경에 맞는 파일을 전부 걸러 냈습니다.2. 오류 예시파일은 분명히 있는데 지을 것이 없다고 합니다.고는 파일을 짓기 전에 거르는 단계가 있습니다. 걸러 낸 뒤 남는 파일이 하나도 없으면 이 오류입니다. 거르는 기준은 둘입니다.//go:build 줄 — 파일 맨 위, package 선언보다 앞에 있어야 합니다파일 이름 접미사 — main_windows.go, net_linux.go, x_arm64.go 처럼이름만으로도 같은 효과가 납니다위 재현은 //go:build windows 가 붙은 파일 하나뿐..
-
[docker] exec bash not found alpine — 알파인에는 bash가 없습니다 1. 오류 설명: exec bash not found alpineexec: \"/bin/bash\": stat /bin/bash: no such file or directory알파인에는 bash가 없습니다. busybox의 ash가 /bin/sh로 있을 뿐이라 /bin/bash라는 파일이 존재하지 않습니다.2. 오류 예시이미지를 알파인으로 바꾸자마자 컨테이너가 뜨지 못합니다. docker exec -it ... bash 로 들어가려 할 때도 같은 말이 나옵니다.stat /bin/bash 라고 적혀 있는 것이 단서입니다. 실행해 보기도 전에 그 이름의 파일이 있는지 보는 단계에서 막혔습니다.알파인에는 bash 가 들어 있지 않습니다.알파인은 이미지를 작게 만드는 것이 목적이라 여러 명령을 busybox 하..
-
[cpp] /usr/bin/ld: cannot open output file — 지은 것을 내보낼 파일을 못 열었습니다 1. 오류 설명: /usr/bin/ld: cannot open output file/usr/bin/ld: cannot open output file build/app: No such file or directory — Permission denied지은 것을 내보낼 파일을 못 열었습니다. 컴파일은 다 끝났고, 남은 것은 폴더가 없거나 쓸 권한이 없다는 것뿐입니다.2. 오류 예시세 가지가 같은 문장으로 나옵니다. 콜론 뒤가 진짜 이유입니다.뒤에 붙는 말뜻No such file or directory폴더가 없다 — 파일이 아니라 그 위 폴더Permission denied그 폴더에 쓸 권한이 없다Text file busy그 파일이 지금 돌고 있다링커는 폴더를 만들어 주지 않습니다. -o build/app 은 ..
인기글
- [Git] fatal: refusing to merge unrelated histories — 붙이지 말고 이어붙이기 1. 오류 설명: unrelated historiesfatal: refusing to merge unrelated histories로컬에서 먼저 작업을 시작한 뒤 나중에 깃허브 저장소를 만들어 연결할 때 거의 반드시 만나는 오류입니다. 깃허브에서 저장소를 만들 때 "Add a README file" 을 체크했다면 확정입니다.원인은 간단합니다. 두 저장소의 뿌리 커밋(root commit)이 서로 다릅니다.로컬: [앱 추가] ← 이것이 뿌리원격: [첫 커밋] ← 이것도 뿌리공통 조상이 없다 → 무엇을 기준으로 합칠지 정할 수 없다Git은 병합할 때 공통 조상을 찾아 "양쪽이 각각 무엇을 바꿨는지"를 계산합니다. 조상이 없으면 이 계산이 불가능합니다. Git 2.9부터는 이런 병합을 기본으로 거부합니.. 2026.09.20
- [Git] Updates were rejected — non-fast-forward, force를 누르기 전에 1. 오류 설명: 푸시가 거부될 때! [rejected] main -> main (fetch first)error: failed to push some refs to '...'hint: Updates were rejected because the remote contains work that you do not have locally.협업하면 반드시 만나는 오류입니다. 내가 마지막으로 받아온 뒤에 다른 사람이 먼저 푸시했다는 뜻입니다.Git이 푸시를 받아주는 기본 조건은 빨리감기(fast-forward) 입니다. 원격의 현재 커밋이 내가 밀려는 이력 안에 그대로 들어 있어야 합니다. 그래야 원격 입장에서는 앞으로 감기만 하면 되고, 잃는 것이 없습니다.받아들여지는 경우 — 원격 커밋이 내 이.. 2026.09.19
- [Spring] NoUniqueBeanDefinitionException — 같은 타입 빈이 둘일 때 1. 오류 설명: NoUniqueBeanDefinitionExceptionNoUniqueBeanDefinitionException은 주입받을 타입의 빈이 둘 이상이라 어느 것을 넣어야 할지 정할 수 없을 때 발생합니다.빈을 못 찾는 오류와 정확히 반대 상황입니다. 하나도 없어서가 아니라 너무 많아서 실패합니다.빈이 0개 → NoSuchBeanDefinitionException (없어서 실패)빈이 1개 → 정상빈이 2개+ → NoUniqueBeanDefinitionException (많아서 실패)인터페이스 하나에 구현체를 여러 개 두는 것은 흔한 설계입니다. 결제 수단, 알림 채널, 파일 저장소처럼 전략이 갈리는 곳에서 자연스럽게 나옵니다. 그래서 이 오류는 설계가 잘못돼서가 아니라 선.. 2026.09.03
- [apache] 404 Not Found requested url was — 파일은 분명히 올렸는데 404 가 납니다 1. 오류 설명: 404 Not Found requested url was404 Not Found — The requested URL was not found on this server.파일은 분명히 올렸는데 404 가 납니다. 아파치가 보는 자리와 파일이 있는 자리가 다른 것입니다.2. 오류 예시브라우저가 404 를 돌려줍니다.파일은 /srv/site/index.html 에 있습니다. 그런데 아파치가 보고 있는 자리는 /usr/local/apache2/htdocs 이고, 거기는 비어 있습니다.404 는 「없다」가 아니라 「내가 보는 자리에 없다」입니다. 아파치는 주소를 파일 경로로 바꿀 때 DocumentRoot 를 앞에 붙입니다. /index.html 을 달라고 하면 DocumentRoot + /in.. 2026.09.16
- [redis] BUSY Redis is busy running a script. You — Lua 스크립트가 오래 돌아 서버 전체가 막혔습니다 1. 오류 설명: BUSY Redis is busy running a script. YouBUSY Redis is busy running a script. You can only call SCRIPT KILL or SHUTDOWN NOSAVE.Lua 스크립트가 오래 돌아 서버 전체가 막혔습니다. 레디스는 한 번에 하나만 실행하므로 그동안 다른 명령은 전부 기다립니다.2. 오류 예시한 스크립트가 도는 동안 서버 전체가 명령을 받지 않습니다.레디스는 명령을 한 번에 하나씩 처리합니다. Lua 스크립트도 하나의 명령이므로, 스크립트가 도는 동안에는 다른 어떤 클라이언트의 명령도 실행되지 않습니다. 그것이 스크립트가 원자적인 이유이고, 동시에 위험한 이유입니다.스크립트가 문턱(busy-reply-threshol.. 2026.09.14
프로그래밍
- [Spring] Failed to configure a DataSource — 드라이버가 없을 때 1. 오류 설명: Failed to configure a DataSource스프링 부트를 띄우자마자 이 메시지를 만나는 경우가 있습니다.Failed to configure a DataSource: 'url' attribute is not specified andno embedded datasource could be configured.Reason: Failed to determine a suitable driver classDB 스타터는 들어 있는데 접속 정보나 드라이버가 없을 때 발생합니다. 스프링 부트가 자동 설정으로 DataSource 빈을 만들려 했지만, 어떤 DB에 어떻게 붙을지 알 수 없어 포기한 것입니다.원인은 셋 중 하나입니다.JDBC 드라이버가 클래스패스에 없다 — 의존성 누락sprin.. 2026.09.12
- [Spring] 404를 직접 처리하기 — NoHandlerFoundException은 이제 안 잡힌다 1. 오류 설명: 매핑되지 않은 경로REST API를 만들면 없는 경로에 대한 404 응답을 직접 만들고 싶어집니다. 기본 응답이 이렇게 밋밋하기 때문입니다.{"timestamp":"...","status":404,"error":"Not Found","path":"/nowhere"}검색하면 거의 모든 자료가 같은 방법을 안내합니다.spring.mvc.throw-exception-if-no-handler-found=truespring.web.resources.add-mappings=false@ExceptionHandler(NoHandlerFoundException.class)public ResponseEntity handle(NoHandlerFoundException e) { ... }Spring Boot.. 2026.09.11
- [Spring] LazyInitializationException — could not initialize proxy: no Session 1. 오류 설명: LazyInitializationExceptionorg.hibernate.LazyInitializationException: could not initialize proxy - no Session은 지연 로딩으로 설정된 연관 데이터를, 영속성 컨텍스트가 닫힌 뒤에 꺼내려 할 때 발생합니다.JPA는 연관 엔티티를 기본적으로 바로 가져오지 않습니다. 대신 껍데기(프록시)만 넣어두고, 실제로 그 값을 쓰는 순간 DB에 다시 물어봅니다. 그런데 그 시점에 세션(영속성 컨텍스트)이 이미 닫혀 있으면 물어볼 곳이 없어 이 예외가 납니다.기본 페치 전략을 알아두면 어디서 터질지 예측할 수 있습니다.연관관계기본 페치 전략@OneToManyLAZY@ManyToManyLAZY@ManyToOneEAGER@.. 2026.09.10
- [Spring] BeanCreationException — Could not resolve placeholder 1. 오류 설명: BeanCreationExceptionBeanCreationException은 빈을 만드는 도중 실패했을 때 발생하는 포괄적인 예외입니다. "빈 생성에 실패했다"만 알려주므로, 원인은 항상 Caused by 아래에 있습니다.이 글에서는 그중 가장 흔한 원인인 @Value로 주입하려는 설정 키가 없는 경우를 다룹니다.BeanCreationException ← 빈을 못 만들었다 (결과) └ IllegalArgumentException ← 왜? (원인) Could not resolve placeholder주입 관련 오류와 구분하면 이렇습니다.예외상황NoSuchBeanDefinitionException주입할 빈이 없음NoUni.. 2026.09.09
- [Spring] HttpMessageNotReadableException — JSON 파싱 실패와 405 1. 오류 설명: HttpMessageNotReadableExceptionHttpMessageNotReadableException은 요청 본문을 객체로 변환하지 못했을 때 발생합니다. @RequestBody가 붙은 파라미터에 JSON을 매핑하는 단계에서 실패한 것입니다.여기서 중요한 구분이 하나 있습니다. 이 예외는 검증(@Valid)보다 앞 단계에서 납니다.요청 도착 ↓① JSON → 객체 변환 ← 실패하면 HttpMessageNotReadableException ↓② 검증 (@Valid) ← 실패하면 MethodArgumentNotValidException ↓③ 컨트롤러 실행객체로 만들지도 못했으니 검증은 시작조차 못 합니다. @Valid를 아무리 잘 걸어도 이 오류.. 2026.09.07
반응형