일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Kotlin
- Winform
- MySQL
- VOA
- 스프링부트
- 스프링
- design pattern
- machine-learning
- Spring Boot
- react
- github
- 코틀린
- 리팩토링
- Spring
- 자바
- Python
- docker
- Java
- 리액트
- 마이바티스
- 파이썬
- 쿠버네티스
- springboot
- AWS
- kubernetes
- DataGridView
- c#
- 도커
- mybatis
- git
- Today
- Total
목록컴퓨터 관련/DB 정보 (18)
보뇨 다이어리
이걸 한두시간쯤 끌어먹었는데 포스트되어있는게 많이없어서 고생하실분들을 위해 포스팅함 :)현재 운영중인 시스템은 mybatis 형식으로 받고있었음 근데 mybatis 내에 입력된 쿼리를 디비 프로시저 형태로 바꾸는 작업을 진행하고있음그렇기때문에 부딪힌 문제가 있는데 바로 insert 시 성공결과 리턴값을 받는방법이다!!아래 보기를 보면 여태까지 이런식으로 리턴값을 받아왔다 그리고 바꿀려는 mybatis + procedure 는 다음과 같다 ** 위와 아래 사진들이 다른데 같은맥락이라고 생각하면됨 근데 문제는 막상 실행시키면 mybatis 에서 리턴값을 못가져옴애초에 insert 할때 받는방법은 selectKeys 방법밖에없기때문에 어떻게할지 생각에 빠짐그러다가 생각한게 애초에 procedure 는 함수이기..
간단하게 시작하자면 각 서버에 설치된 mysql 에 접속할려고하니 아래와 같은 에러를 밷음 그래서 찾아보니 아래와 같이 해결하면 끝!즉 이렇게 mysql -u[mysql 아이디] -p[mysql 비밀번호]물론 위에서 괄호는 특징을 보여준것이니 타이핑할때는 빼야한다예시를 보자면 아래와 같이 해결하면 된다일부러 모자이크 처리했당
제목을 어떻게 써야할지 모르겠는데 일단 직설적으로 써봤다문제가 뭐였냐면 예를들어 mysql DB 에 sms 테이블이 있는데 이 해당테이블에 id 컬럼값은 연속된 값 옵션을 줘서 유니크값을 가지고 있었다. 그것을 통해 CRUD 를 사용하고 그랬는데.... 그러던 어느날!! 프로그램에서 에러를 뱉음이유를 찾아보니 id 값이 증복되어있었음... 이것에 대해 궁금증을 풀기위해 여러군데에 알아본결과 DB가 있는 서버나 DB 를 껏다가 다시 살릴경우 연속된 값을 주기로 되어있는 id 컬럼이 초기화되는것이다....;;서버가 계속 살아있어야하지만 항상 살아있어야한다고 보장할수도 없고 해결방법을 찾았는데 그것은 바로 대부분 DB 엔진이 InnoDB 일텐데 이것을 ---> myisam 으로 바꿔야한다는것이다. 근데 이건 ..
음.....평소와 같이 spi 를 추가하고 있다가 아래와 같은 에러가 발생 1Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'leave = FROM_UNIXTIME(1534399179)cs 구문오류라는데 도저히.. 아래는 해당쿼리다 12345678910111213 UPDATE commute_record leave = FROM_UNIXTIME(#{leave}), leave_beacon = #{leav..
이게 생각보다 매우 간단한 문제여서 놀랬..바로 본론으로 넘어가기 앞서 쿼리를 뚜둥! 솔직히 아래 쿼리가 썩 보기좋은 상태는 아니지만 일단 넘어가구문제는 디비 date 컬럼을 조건을 통해 검색하는것이다근데 이게....예를들어 2018-08-14 라는 조건을 받을려면 string 타입으로 받아야하는데 디비의 date 타입과 어떻게 비교해야할지 고민에 빠져서 인터넷검색을 죄다 해봤는데 안됨...ㅠㅠ 그래서 혼자 이렇게 될까싶어서 해보니 됨...좀 어이가 없었다; 12번줄을 확인하면 된다12345678910111213141516 SELECT `date` , e.name as manager , b.total , b.come_count , b.leave_count FROM commute_by_manager as ..
aws 를 수정해야하는 상황이 닥침쿼리가 너무 불필요하게 작성되어있어서 쿼리를 리팩토링했다조건절이 많이 들어간게 미적으로 별론데 현재 내가 할수있는선까지는 수정했다 :)Before123456789101112131415161718192021select c.id , c.come_leave , p.is_come , p.path , e.id as employee_id , e.image , d.company_id , o.account from ( select id, come as come_leave, employee_id, true as is_come from commute_record where come is not null and come_match is null union select id, `leave` ..
시리즈물이기 때문에 글은 생략Before 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 SELECT r.id , UNIX_TIMESTAMP(r.come) as come , UNIX_TIMESTAMP(r.leave) as `leave` , r.employee_id , r.division_id , r.manager_id , r.come_match , r.leave_match , r.pad , valid , e.wage , come_beacon , leave_beacon FROM commute_record as ..
이건 시리즈물이다그렇다정확히 코드를 리팩토링하는 과정인것이다하는이유는? 첫째는 내가 만지기 빡씨다는점이다...ㅂㄷㅂㄷ따로 설명은 넣지않을것이다 왜냐? 설명을 넣을 필요도 없이 간단하기 때문이지!Before12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 UPDATE commute_record SET pad = pad , `leave` = FROM_UNIXTIME(#{leave}) , leave_beacon = #{leave_beacon} , leave_beacon = null , come_beacon = #{come_beacon} , come_beacon = null , come_match = ..