일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- strpos()
- formula
- implode()
- JavaScript
- 오류
- 배열
- 정규식
- ES6
- 지직거림
- 노션
- 이걸 그렇게 쓸 줄은 몰랐지
- 1064
- getimagesize()
- SQL
- explode()
- srtpos()
- 특수문자 포함여부
- 동작안함
- 문자열 포함여부
- 일부 문자열 포함여부
- MySQL
- includes()
- php
- error
- jQuery
- myshortcut
- 서버부하
- Excel
- primary_key
- 중간에추가
- Today
- Total
목록MySQL (10)
코딩짜는 일상
서론 업소별 매출자료를 조회하다가 Error Code: 1111와 Error Code: 1064에러를 봤습니다. 원하는 건 배달완료 건수, 배달취소 건수, 배달완료 할인금액(포인트 + 쿠폰), 배달완료 매출금액 이렇게 4개였는데 WHERE절에 배달완료인 상태, 배달취소인 상태를 각각 조건 바꿔서 검색하는게 귀찮았습니다. 그래서 WHERE '배달상태' IN ('완료', '취소')를 조건으로 두고 SUM, IF를 이용해 조건 합을 구하려 했지만... 배달완료 할인금액(포인트 + 쿠폰)에서 오류가 발생하였습니다. Error Code: 1111 가장 먼저 조건이 맞으면 SUM을 이용해 포인트와 쿠폰값을 더하도록 해봤습니다. SELECT SUM( IF(`배달상태`='완료', sum(`포인트` + `쿠폰`), 0)..
MySQL에는 INSERT문을 쓰는 방법이 2가지 있습니다. 첫번째는 SQL 표준이고 INSERT INTO table (a, b, c) VALUES (1, 2, 3); 두번째는 MySQL 확장입니다. INSERT INTO table SET a=1, b=2, c=3 첫번째 방법은 SQL표준이라 다른 DB를 쓰더라도 똑같이 사용할 수 있고 여러개의 row를 추가할 때 아래와 같은 방법으로 한 번에 등록이 가능합니다. INSERT INTO table (a, b, c) VALUES (1, 2, 3), (4, 5, 6), (7, 8, 9); 단점으로는 칼럼을 쓴 순서와 똑같이 해당하는 벨류값도 순서대로 넣어줘야 제대로 insert가 된다는 점인데.. 수기로 쓰다보면 실수할 위험이 있습니다;; 두번째 방법은 컬럼 ..
각 회사마다 DB에 safe mode를 걸어두는 회사가 있습니다. 저희 회사가 그랬고... 때문에 DELETE 쿼리가 작동하지 않았죠. 아래 오류 문구를 보면... error code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. 현재 safe update mode를 사용중이며, WHERE절에 KEY컬럼 없이 업데이트를 하려고 했다. 고 설명합니다. 요컨데 safe update mode에선 Primary key를 WHERE절에 꼭 넣어야 삭제 및 업데이트가 가능하다는 뜻이 됩니다. 방법으로는 0 를 추가해주는 방법이 있습니다. 결론은 SQL쿼리에서 UPDA..
excel을 이용해 DB로 데이터를 입력할 때, 값에 띄워쓰기나 기타 다른 부호가 있으면 완전히 다른 값으로 인식하게 됩니다. 이렇게 되면 JOIN도 먹히지 않죠. 때문에 JOIN될 테이블의 외래키(Foreign Key)와 새로 등록될 테이블의 외래키가 동일한지 확인하는 작업이 필요합니다. 저는 VLOOKUP을 이용해 아래와 같이 외래키를 확인합니다. =VLOOKUP('새로 등록될 테이블의 외래키','JOIN될 테이블의 외래키 목록(행열고정)',1,FALSE) 그런데 결과로 나와야 할 값 대신에 다른 행의 값을 반환하는 오류가 생겼습니다. =VLOOKUP(E3,$B$3:$C$9,2,FALSE) 분명 수식에는 오류가 없었는데 원인을 몰라 해매다가 대체제로 =EXACT를 썼습니다. 그러다 파일을 열 때마다 ..
어제 2주정도 붙잡고 있었던 array를 POST로 전달하는 문제를 해결했다. 개발 유지보수를 용이하게 하기 위함이었는데... 들인 노력에 비해 코드는 적용도 못 되고 사라져야 했다. 이유인 즉슨... 조회 결과를 배열로 만들어 주고받으면 조회된 rows가 많을 수록 배열 크기도 커지고 사용될 서버 메모리도 늘어날 것이라는 점이었다. 덤으로 전달받을 녀석에겐 필요한데 조회해서 넘겨줄 녀석에겐 필요없는 칼럼의 경우... 필요없는 칼럼까지 조회함으로써 시간을 더 소모할 수 있다는 단점도 추가된다. 크~ 이걸로 백엔드가 갖춰야 할 관점에 대해 한 수 배웠다. 진짜 많이 생각해야되넹;; 뭐... 일단 해결책으로는 1. 배열 말고 쿼리를 주고받는 걸로 바꾸고... 2. 기능 on하면 GET이든 POST든 변수A를..
시작 개발자로 처음 구직을 할 때 간간히 보았던 문구가 이름 잘 짓는 분 찾습니다!였습니다. 그게 좀 신박하고 직관적인 이름을 선택할 줄만 알면 되는 줄 알는데... 회사에서 페이지 몇 개 만들면서 점점 쿼리가 복잡해지니까 알게 되었습니다. 중요한 건 쉽게 외울 수 있게 짓는 것이란 것을..! 테이블, 컬럼 이름짓기 규칙 테이블을 이름으로 세분화 하자. 컬럼 이름 앞엔 테이블 이름을 약어를 붙이자. 버전이 다른 테이블은 컬럼 이름을 같게 하자. 이유 1. 테이블을 이름으로 세분화 하자. 사이트에 기능이 추가될 수록 담아야 할 정보는 늘어만 갑니다. 로그인을 만들면 유저의 개인 정보를 저장해야 하고 게시판을 만들면 글쓴이 정보와 글 비번, 컨텐츠, 댓글을 저장해야 하고 상품판매 페이지를 만들면 사진과 내용..
DB검색용 API를 만들고 그걸 출력하는 페이지를 만들었는데, API 출력 란에 1065 : Query was empty 가 출력되었습니다. 인터넷에 검색해보니 $sql = ''; $result = mysql_query($sql); 위와 같은 상황에서 발생할 수 있다고 했습니다. 아니... 분명 $sql에 쿼리 문구 넣었고.. 심지어 DB에서 테스트해봐도 정상 작동하는 쿼리인데 왜...? 그래서 다시 확인해봤더니... $spl = ''; $result = mysql_query($sql); ... 정답은 오타였습니다. 이렇게 또 한 번 저의 허술함을 깨닫게 되는군요~
문제 글 삭제 기능을 수행하는 delete.php를 작성 후 실행. → 삭제 되었다는 알람이 뜸. → 메인으로 돌아왔지만 삭제했던 글이 그대로 남아있음. 분석 삭제 되었다는 알람이 뜨는 걸 보면 삭제 쿼리가 정상적으로 작동된 것을 알 수 있음. (쿼리가 잘못되었다면 오류창이 떴을 것임) 해결책 1. 혹시나 오타가 있는지 확인해본다. (특히 삭제할 레코드를 특정해주는 WHERE문 다음 내용) → 문제 없음. 2. MySQL 서버 설정을 재확인. (db.php) → 문제 없음. 3. 서버 설정을 보니 root계정이 아닌 새로 만든 계정을 사용중인 것을 확인. 계정에 부여된 권한 확인. → DELETE권한이 없어서 부여함. → 해결!! 이것 참... 개발 시작한지 얼마 안 되었는데 벌써부터 혼자 다양한 삽질을..