본문 바로가기

DB

(28)
JPA: @DataJpaTest 에서 트랜잭션 Rollback 이 안된 이유는? 어떤 기능의 변경에 대한 요청을 받았다. 마침 이전에 존재했던 기능에 테스트 코드가 없었다. 테스트 코드를 먼저 만들었다. 왜냐하면 변경 이후에 잘 동작하는지 안전망이 필요했기 때문이다. Unique index violation 이 발생 IntelliJ IDEA에서 테스트 묶음(Test Suites) 들을 돌릴 때는 문제가 없었다. 그런데 이상하게 로컬 환경에서 터미널에서 mvnw clean test 명령을 돌리면 테스트 하나가 깨진다. 원인을 찾아보니 DataIntegrityViolationException 가 발생했고, 세부적으로는 Unique index violation 이 발생했다. org.springframework.dao.DataIntegrityViolationException: could n..
[DB] ERD 그림 그리기 사내 Confluence에 ERD가 있는데 스프링 배치의 Spring Batch 용 Meta-Data 의 그림과 비슷한 것을 발견했다. 박*일 님이 작성해서 물어보니 MySQLWorkbench 의 기능이라고 한다. 어떤 메뉴가 ERD를 만드는지 찾아보니 Database > Reserse Engineer 였다. 마법사(WIZARD) 형식으로 진행이 가능하다. 아래와 같은 7가지의 단계를 걸치는데 Select Objects에서 Show Filter 버튼을 눌러서 필요한 테이블만 선택해서 표시할 수 있다. 처음에 헷갈렸던 것은 왼쪽이 선택한 항목인데 반대로 선택했다.
[db] file db architecture ?! 예전 윈도우 애플리케이션을 만들때 PC에서 DB를 관리하기 위해 mdb (access), SQL Server Compact, sqlite3 등을 이용한 적이 있다. 이후에 웹 기반으로 기술스택을 바꾸면서 샤딩이라는 것을 알게되었는데 그 때 회원ID (숫자)을 32로 나머지 연산을 한 나머지로 DB 격리(isolation)을 한 적이 있다. 그러면서 든 생각이 개인별로 DB를 따로 관리하면 비용도 적게 들고 속도도 왠만큼 받춰주지 않을까 생각이 들었다. 한참 MSA(microservice architecture)가 유행했을 시기였기 때문이다. 오늘 tech share 채널에 'Project LightSpeed: Rewriting the Messenger codebase for a faster, smalle..
[MySql] varchar 5라면 한글은 몇 글자까지 들어갈 수 있을까? 메시지를 담는 컬럼이 크기 초과로 에러가 발생했다. (conn=581480) Data too long for column 'RESULT_MSG' at row 1 org.hibernate.engine.jdbc.spi.SqlException 방어 코드를 넣기 위해 최대 크기를 테스트 해보았다. 임시 테스트 생성 임시로 테스트 테이블을 만들고... create table P_TEMP ( id int(20) unsigned auto_increment, name varchar(5) null, PRIMARY KEY (id) ); 6글자를 초과하는 데이터를 입력해본다. (당연히 실패를 예상하고 진행) INSERT INTO `payment`.`P_TEMP` (`name`) VALUES ('나모의노트2') [2019-1..
Aurora MySQL - alter table modify column 에러 운영중인 DB의 컬럼의 크기가 늘어나야 하는 요구사항이 생겼다. 기존에 VARCHAR(50)이었는데 이제 128 바이트를 넣어야 한다. 단순히 아래와 같은 SQL을 생각하고 개발 환경에서 실행을 했는데,,, ALTER TABLE MY_HISTORY MODIFY MY_ID VARCHAR(128) 아래와 같은 에러가 난다. [HY000][1025] Error on rename of './my/MY_HISTORY' to './my/#sql2-1f71-742fba' (errno: 155 - The table does not exist in engine). AWS상에서 돌아가는 Aurora MySQL 엔진이라 들었던 생각은 아래와 같다. 1. Aurora MySQL은 MySQL과 SQL이 다른가? 2. 혹시 읽기..
[MySQL] docker에 CLI로 접속하기 Docker 설정설치방법리포지토리(Repository): https://hub.docker.com/_/mysql/사실 설치방법은 위의 리포지토리에 잘 적혀지 않습니다. 버전은 latest가 아닌 5.6을 기준으로 합니다.이미지 가져오기$ docker pull mysql:5.65.6: Pulling from library/mysqlf17d81b4b692: Already existsc691115e6ae9: Pull complete41544cb19235: Pull complete254d04f5f66d: Pull complete4fe240edfdc9: Pull completeb79c3b745cc6: Pull completec6ebcbee59b1: Pull completee9bb65297d95: Pull comp..
[BI] Tableau 게시시에 통합문서명은 영문으로... Tableau Desktop으로 작업하면 태블로 작업의 끝은 Tableau Server에 올리는 게시(publish)일 것이다. 게시를 하다보니 이름 지정시에 영어로 해야 하는 것이 좋을 경우를 발견했다. 한글명으로 통합문서 명을 지정했더니 아래와 같이 URL 상에 문서명을 _1 과 같이 업데이트 하는 것을 확인했다. http://tableau. mycompany.com/#/site/review/views/_1/sheet1?:iid=10 영어로 하니 아래와 같이 URL에 문서명이 들어간다. http://tableau.mycompany.com/#/site/review/views/DailyConversionRate/sheet1?:iid=1 만약 통합 문서명에 공백이 들어가 있으면 알아서 공백은 없애서 주소를..
[Tableau] 날짜 필드 변환하기 hive상 데이터는 20170725 와 같은 문자열이다.문자열로만으로 열로 이용할 수 있지만 문제는 분기나 월 같은 단위로 그룹핑을 할 때 제한이 생긴다.그래서 필드를 열로 변환을 할 필요가 있다. 왼쪽의 dt 라는 컬럼이 원래 있는 값인데 Abc 즉 문자열로 인식되고 있다. 그 옆에는 계산이라고 되어 있어서 dt를 기반으로 날짜로 변환을 해주었다. 계산식은 아래와 같다.DATEPARSE("yyyyMMdd",[dt])dt의 형식대로 앞에 써주고 두 번째 파라메터에는 적용할 열을 써주었다.포맷이 다를 경우 아래 링크를 참고하면 된다. https://onlinehelp.tableau.com/current/pro/desktop/ko-kr/dates_custom_date_formats.html 만약 증분 데이터..