전체 글

전체 글

    [Oracle] ORA-01008 : not all variables bound

    개발를 완료한 후에 담당자에게 회신하고, 다른 일을 하는 사이에 담당자에게 데이터를 수신받지 못했다고 연락이 왔다. 로그를 확인하니 에러가 발생했고, 에러 내용을 자세히 보니 'ORA-01008 : not all variables bound' 와 마주하게 되었다. 에러 내용은 선언하지 않은 변수를 value에 넣었기 때문에 발생하였다. INSERT INTO TABLE_NAME ( COLUMN1 , COLUMN2, COLUMN3 )VALUES( :COLUMN1, :COLUMN2, :COLUMN4 ) . . . . 즉, 위처럼 에서 COLUMN4는 선언되지 않았지만 매핑이 되어있다. 아래처럼 잘못 매핑한 컬럼(COLUMN4)을 선언한 컬럼(COLUMN3)으로 수정해주면 에러가 해결된다. INSERT INTO..

    [MariaDB] Truncated incorrect decimal value ''

    최근에 MariaDB를 사용하는 시스템의 DB 업그레이드 작업이 있었다. 업그레이드 작업이 끝난 후에 MQ 가 정상적으로 되고 있는지 모니터링을 진행한 후 에러없이 작동한다고 판단하고 모니터링을 종료하였다. 업그레이드 작업이 끝나고 2주정도 지났는데 해당 서버 담당자한테 데이터가 I/F가 되지않는다는 연락을 받고 확인해보니 해당 테이블에서 에러가 발생하고 있었고, 해당 내용을 수정한 내용을 적고자 한다. DB 업그레이드를 하기 전에는 정상적으로 데이터의 송수신이 이루어지고 있었는데, DB 업그레이드 이후 에러가 발생한 이유를 살펴보기 위하여 소스를 살펴보았다. 보통 Date은 형변환을 하기 때문에 STR_TO_DATE() 메서드를 사용해서 Insert를 한다. 그래서 형변환 메서드는 자주 목격할 수 있는..

    [Linux] 리눅스 명령어와 친구가 되어보자! ( 관리 명령어편 )

    회사에 출근하고 퇴근할 때까지 리눅스에서 업무를 한다. 이전에 교육을 받을 때 잠깐이지만 리눅스 명령어에 대해 배워서 그런지 (그때는 취업하면 이런 거 안쓸 줄 알고 등한시했는데 지금은 맨날 쓴다.....) 업무를 시작하고 리눅스를 사용하는 것에 대해 거부감이 들지 않았다. 하지만 맨날 같은 명령어만 사용하게 되는데 그러다가 그거만 쓸 줄 아는 개발자로 전락할 것 같아서 기본 명령어부터 차근차근 정리해보면서 여러가지 명령어에 대해 공부하기 위해 포스팅을 계획하게 되었다. 필자는 Windows OS를 사용하고 있어서 VMware를 사용해서 Linux OS 환경을 만들어야 할까 고민을 하다가 아주 좋은 사이트를 발견하게 되었다. JSLinux bellard.org '리눅스 명령어 연습 사이트'라고 검색해서 ..

    [DataBase] 기본 키를 여러 개 설정한다고??

    지금까지 다룬 서비스 중에 가장 큰 서비스는 취업을 위해 개인적으로 진행한 일정 관리 프로그램이었다. 그래서 데이터의 개수도 작았고 테이블의 컬럼도 상대적으로 많이 약소했다. 현재 서버 개발자로 업무를 하고 있진 않지만 데이터가 잘 이동할 수 있도록 개발을 하고 있기 때문에 데이터와 관련 있는 업무를 진행하고 있다. 그러면서 많은 테이블의 컬럼을 보면서 필자가 이제까지 설계한 테이블과 다른 점을 한눈에 파악할 수 있었는데 그중에서 눈에 띈 것이 바로 Primary Key(기본키)였고 이번 포스팅에서 기본키에 대해 알아보려고 한다. 기본키란? 필자가 쓰고자 하는 내용에 앞서 먼저 기본키가 무엇인지에 대해 아는 것이 먼저인 것 같아 기본키에 대해 설명하면 이름에서 말하듯 기본이 되는 키다. 정말 성의 없는 ..

    인증번호 전송 기능을 구현해보자!

    저번 포스팅에서 메시지 큐에 대해 알아보면서 메시지 큐가 어떤 경우에 쓰이는지 알아보던 중 메일을 보내는 로직에서 사용된다는 것을 알 수 있었다. 예전에 Hi Planner 프로젝트에서 회원 가입 시 입력한 이메일로 인증번호를 받아 본인 인증을 하는 로직을 구현했는데 복기한다는 생각과 동시에 포스팅을 해서 남겨놔야겠다는 마음이 들어서 이번 포스팅을 쓰게 되었다. 의존성 추가 Gradle implementation 'org.springframework.boot:spring-boot-starter-mail' Maven org.springframework.boot spring-boot-starter-mail 가장 먼저 의존성을 추가해주도록 하자. 필자는 Gradle을 선호하는 편이기 때문에 Gradle을 사용..

    메시지 큐(Message Queue)에 대해 알아보자!

    취업을 하게 되면서 처음으로 쓰는 포스팅이다. 회사를 다닌 지 어느덧 한 달이라는 시간이 흘렀고, 짧다면 짧고 길다면 긴 한 달을 회사에 적응하기 위해 노력했다. 물론 퇴근하고 공부를 하려고 마음먹었지만 생각처럼 의자에 앉아있는 게 쉽지 않았다. 차일피일 미루다 보면 허송세월 하게 될 것 같아서 지금이라도 틈틈이 공부를 하려고 한다. 그래서 취업 후 첫 포스팅은 '메시지 큐'에 대해 쓰고자 한다. 메시지 큐(Message Queue)란 ? 메시지 큐는 Message Queue 혹은 MQ라고 부른다. 사람들이 MQ라고 줄여서 많이 부르는 것으로 보아 MQ라고 해도 의미 전달이 될 것이다.(이 포스팅에서는 MQ라고 부르기로 하자.) MQ는 메시지 지향 미들웨어(Message Oriented Middlewar..

    [JavaScript] 제어문과 배열

    - 조건문 문법 if (표현식1) { 표현식1의 결과가 참일 때 실행하고자 하는 실행문; } else if (표현식2) { 표현식2의 결과가 참일 때 실행하고자 하는 실행문; } else { 표현식 1에도 포함하지 않고 표현식 2에도 포함되지 않을 때 실행되는 실행문; } 예제 var x = 10, y = 20; if (x == y) { document.write("x와 y는 같다."); } else if (x y인 경우 document.write("x가 y보다 크다."); } - 삼항 연산자 문법 표현식 ? 반환값1 : 반환값2; - switch문 문법 switch (조건 값) { case 값1: 조건 값이 값1일 때 실행하고자 하는 실행문; break; case 값2: 조건 값이 값2일 때 실행하고자..

    동기와 비동기의 차이(+ 블로킹과 논블로킹)

    동기(Synchronous) 동기의 뜻을 살펴보면 '동시 발생하는'라는 뜻을 가지고 있다. 즉, 요청과 결과가 동시에 발생한다고 할 수 있다. 그래서 요청을 하면 시간이 얼마나 걸리든 그 자리에서 결과가 주어져야 한다. 순서대로 진행된다는 장점이 있지만, 여러 가지 요청을 동시에 수행할 수 없다. 카페에서 음료를 주문하는 과정을 예로 설명하면, 음료를 주문하고 음료가 나올 때까지 계산대에서 기다리는 것을 동기 방식의 예로 설명할 수 있다. 비동기(Asynchronous) 반면에 비동기는 '동시에 발생하지 않는'라는 뜻을 가지고 있다. 즉, 요청과 결과가 동시에 발생하지 않는다. 그래서 하나의 요청에 따른 응답을 바로 하지 않고, 또 다른 요청에 대해 처리가 가능한 방식이다. 동기 방식에 비해 여러 가지를..

    [DataBase] 정규화에 대해 알아보자!

    이전 포스팅에서 정규화 과정으로 쪼개 놓은 테이블을 사용하기 위해 Join을 사용한다는 것을 알게 되었다. 이전부터 정규화에 대해 알고 있었지만 이렇게 정리를 해놓으면 오래 기억되기 때문에 이번 포스팅에서는 정규화에 대해 알아보려고 한다. [DataBase] Join을 왜 써야 하지?(+ Join 종류) 조인(Join)이란? join의 사전적 정의를 보면 '연결하다', '잇다', '합쳐지다' 등등 어느 하나와 다른 하나를 더하는 의미를 가지고 있다. 마찬가지로 데이터 베이스에서 join의 의미도 하나의 테이블 gwamssoju.tistory.com 정규화란? 정규화는 관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 일컫는다. 정규화 과정을 통해 중복된 데이터를 허용하지 않음..

    [Spring] Spring Boot에서 MockMvc 사용해보자!

    학습 목표 MockMvc를 활용해서 테스트 코드를 작성하는 방법에 대해 알아보자. MockMvc란? 웹 애플리케이션을 애플리케이션 서버에 배포하지 않고 테스트용 MVC환경을 만들어 요청 및 전송, 응답 기능을 제공해주는 유틸리티 클래스이다. 즉, 실제 객체와 비슷하지만 테스트에 필요한 기능만 가지는 가짜 객체를 만들어서 스프링 MVC 동작을 재현할 수 있도록 하는 클래스를 의미한다. 의존성 추가 - gradle testImplementation 'org.springframework.boot:spring-boot-starter-test' - maven org.springframework.boot spring-boot-starter-test test (필자는 스프링 부트 프로젝트를 생성할 때마다 해당 의존성..