코드에서 SQL데이터를 가공하고, SQL INSERT 실행하여 DB에 저장하는부분에서 A~F 까지의 칼럼중에 D,E를 제외한 값들만 들어가지는 문제를 경험하게 되었습니다.
문제는 몇 번을 INSERT하더라도 A~F 칼럼만 INSERT가 되지 않더군요.
INSERT INTO a (`a`,`b`,`c`,`d`,`e`,`f`) VALUES ('1INCH_USD','1675296000','0.53045','0.5753','0.52574','0.53045'), ('AAVE_USD','1675296000','88.793','93.326','87.961','88.7') ON DUPLICATE KEY UPDATE update_time = current_timestamp(3);
이런식의 코드였는데 처음에 했던 부분은 '칼럼 값과 삽입 하려는 데이터의 갯수가 맞는가?' 였습니다.
당연히 데이터의 갯수는 맞았죠.
두 번째로 한 시도는 'UPDATE문을 사용했을 때 null로 들어가 있는 칼럼 값이 바뀌는가?' 였습니다.
이 부분 또한 동일하게 null이 였구요.
세 번째로 한 시도는 ' MySQL 프로그램 내에서 값을 직접 삽입 했을 때 변경이 되는가?' 였습니다.
값이 정상적으로 삽입이 되었습니다. 이로 인해 Table locking이 걸렸다거나, 만들지도 않은 보이지 않는 Trigger가 걸린게 아니라는 걸 알게 되었습니다.
그 이후 다시 insert문으로 삽입을 시도 했으나 직접 넣은 데이터를 제외하고 들어가지 않는 것이였습니다. 이 부분을 하다가 알게 된 부분 중에 하나는
PK 키 값이 같은 값이 들어올 때 그 값은 무시되어지도록 하기 위해
ON DUPLICATE KEY UPDATE update_time = current_timestamp(3);
INSERT 마지막에 위와 같은 코드를 사용했습니다.
이 부분이 그 당시에는 같은 값이 들어올 때 마지막에 들어온 데이터로 덮어쓰기 하고, update_time으로 한다로 잘 못 생각하고 있었는데 그게 아니라 값은 그대로고 update_time만 변경한다는 의미였던 것이죠.
그렇기 때문에 기존 데이터를 모두 삭제 후 다시 넣어야 했고, 기존에 Insert했던 데이터를 모두 삭제하고, 다시 Insert하여 해결하였습니다.
'프로그래밍(Web) > 업무관련' 카테고리의 다른 글
[바미] Java - BigDecimal 반올림 메소드 주의사항. (0) | 2023.05.06 |
---|---|
[바미] linux서버 용량 관리하기. (0) | 2023.04.07 |
[바미] Java Milliseconds to Seconds 에피소드. (0) | 2022.12.16 |
[바미] Java 스케줄러 삽질기. (0) | 2022.12.15 |
[바미] Java ConcurrentModificationException 에러 (0) | 2022.11.18 |