분류 전체보기
-
[Mysql] Data Truncated errorDataBase/Mysql 2022. 4. 15. 20:51
Mysql 사용 중에 다음과 같은 에러를 보게 되었다. data truncated for column 말 그대로 컬럼 데이터가 잘렸다는 뜻이었다. 마주한 상황은 특정 컬럼에 데이터를 업데이트를 하는 상황이었다. 해당 에러는 일반적으로 db의 설정된 자료형에 범위보다 큰 데이터를 넣는 경우 발생한다. 업데이트를 원하는 데이터는 varchar(10)이었고, 데이터의 크기는 딱 11글자였다. 그렇기에 한글자가 잘려서 표현되었다. 나의 경우에는 dev에는 varchar(20)으로 해서 잘 되었지만 qa서버에서 10으로 해두고 깜빡하고 설정을 해두지 않았기 때문이었다;; 이래서 qa 서버가 존재하는 듯.. varchar 크기를 증가시키면 해당 에러는 해결된다.
-
[Java] 객체 복사에 대한 고찰Language/Java 2022. 4. 15. 00:01
제목은 거창하게 객체 복사에 대한 고찰이라고 적었지만 사실 개발자라면 흔히 들어본 shallow copy, deep copy 부분에 대한 포스팅이다. shallow copy는 얕은 복사라는 뜻으로 보통 주소값(참조값)을 복사한다는 뜻이고, deep copy는 깊는 복사라는 뜻으로 주소값이 아닌 값 자체를 복사한다는 뜻이다. 이러한 부분을 상세히 이해하려면 stack, heap에 대하여 좀 더 공부를 하여야한다. 또 이 부분을 자세히 공부하려면 메모리에 대하여 공부를 하여야 한다. (역시 공부는 끝이 없..) 그래도 이번 포스팅이 이러한 객체를 복사하는 것에 대한 고찰 글이므로 간략히라도 적어본다. 1번 예제) int a = 1; -> 이런식으로 코드를 작성하게 되는 경우 변수 a와 1은 각자 다른 곳에 ..
-
[Mysql] Incorrect string value .. charset 설정할 것!DataBase/Mysql 2022. 3. 20. 13:25
오랜만에 스프링으로 mysql 연동을 처음부터 시작하려는 데 다음과 같은 에러가 발생하였다. Incorrect string value .. 이런 에러이다. 스프링단에서 디버그 걸어서 확인해보니 이상없이 잘 전달되었는 데?? 왜 한글을 못알아먹는거지 하고 생각해보았다. 스프링에서 이상이 없었으니 mysql과 연동에 문제였다. mysql을 기본으로 설치하면 latin1이라는 인코딩 방식인데 이는 한글을 인식하지 못하기 때문에 발생한 것이다. 그러므로 인코딩에서 가장 많이 사용하는 utf8을 사용하고자 하였다. 더하여 이모티콘도 사용할 수 있도록 하여야하므로 utf8mb4방식을 사용하였다. mysql 설치를 한 곳을 찾아서 다음 작업을 수행하면 된다. vim /etc/mysql/my.cnf my.cnf파일을 ..
-
[Spring] request에서 enum으로 값 전달받기Framework/Spring 2022. 3. 15. 23:27
모든 소스 코드는 github를 통해서 확인하실 수 있습니다. Controller에서 request 값을 받을 때 보통 String값을 많이 쓴다. 그렇다면 String이 아닌 enum 값이 포함된 값은 어떻게 받을까? @Slf4j @RestController public class ProductController { @PostMapping("/") public String createProduct(@RequestBody CreateProductDto dto) { log.info("ProductStatus = {}", dto.getProductStatus()); log.info("ProductName = {}", dto.getProductName()); log.info("Count = {}", dto.g..
-
[Spring] Querydsl 동적 쿼리Framework/Spring 2022. 3. 4. 22:22
이번에는 Querydsl로 동적 쿼리를 작성하여 다양한 상황에 대응하는 법에 대해서 알아보고자 한다. jpa나 querydsl을 사용하기 전에는 si업계를 주름잡고 있는 mybatis를 사용했었다. mybatis에서도 동적쿼리를 작성할 수는 있지만 읽기가 굉장히 복잡했었다. 그렇기에 querydsl을 통해서 동적쿼리를 익혀서 어려운 쿼리에 대응해보도록 하자. 우선 동적쿼리를 작성하는 방법은 2가지이다. BooleanBuilder사용 BooleanExpression을 통한 메소드 사용 우선 1번부터 알아보도록 하자. QMember member = new QMember(); void dynamicQuery_BooleanBuilder() { String username = "member1"; Integer a..
-
[Spring] QueryDsl projection(2)Framework/Spring 2022. 3. 2. 21:53
2022.03.01 - [Framework/Spring] - [Spring] QueryDsl projection [Spring] QueryDsl projection 이번 시간에는 QueryDsl을 사용하여 projection하는 방법을 알아보도록 한다. 실무에서 보통 전체 필드에 대한 조회보다는 특정한 필드만 select 하고 싶을 때가 많다. 그럴 때 JPA보다는 QueryDsl을 쓰는 developia.tistory.com 지난번에 QueryDsl projection을 해보았는 데 이번에는 Q 파일을 생성하여 projection하는 방법에 대해서 알아보도록 한다. 바로 코드로 알아보자. List result = queryFactory .select(new QMemberDto(member.usernam..
-
[Spring] QueryDsl projectionFramework/Spring 2022. 3. 1. 21:18
이번 시간에는 QueryDsl을 사용하여 projection하는 방법을 알아보도록 한다. 실무에서 보통 전체 필드에 대한 조회보다는 특정한 필드만 select 하고 싶을 때가 많다. 그럴 때 JPA보다는 QueryDsl을 쓰는게 좋은 그 예시를 보도록 하자. EntityManager em; List result = em.createQuery("select new study.developia.querydsl.dto.MemberDto(m.username, m.age)" + " from Member m", MemberDto.class).getResultList(); 우선 순수 JPA로 작성하였을 때는 다음과 같다. 쿼리 부분을 보면 select절에 dto 패키지명을 전부 다 적어야하는 것을 알 수 있다. 물론..
-
[Javascript] NVM 정리Language/Javascript 2022. 2. 26. 00:03
예전에 프로젝트에서 작업하던 것들을 오랜만에 버전업을 전부 최신으로 업그레이드하였다. 이 때 최신버전을 알기 위해서 package.json을 쉽게 관리하는 포스팅을 했었다. 2022.02.25 - [Framework/React.js] - [React.js] package.json 버전관리 패키지 그 연장선으로 이렇게 오래된 프로젝트나 최신 프로젝트를 동시에 진행하게 되면 여러가지 node버전을 사용하게 된다. 이 때 노드 버전에 따라서 호환되지 않는 패키지들이 있을 수 있다. 그렇기 때문에 다양한 노드 버전을 관리할 수 있어야 한다. 이를 가능케해주는 것이 NVM이다. NVM에 대해서 요약하자면, 1. Node.js의 다양한 버전을 관리하는 역할을 한다. 2. 여러개의 노드 버전을 사용하고 싶을 때 사용..