MySQL 테이블의 Type을 잘못 지정해서 에러가 발생한 원인을 찾느라고 개고생을 했다.
PHP 프로그램으로 구조변경을 하면서 새로 코딩을 하고, 테스트를 하는데 엉뚱한 결과가 계속 나왔다.
PHP 코드를 계속 살펴보고, 잘못된 것이 없는데 왜 그럴까 하면서
테이블 데이터를 Truncate 로 날려보기를 수십번 ...
이 방법 저 방법을 사용하면서 코드 에러 나는 부분을 찾아보고자
echo "<script>alert('$content')</script>";
에러가 발생하는 부분에 자바스크립트로 찍어가면서 확인을 해봤다.
팝업창에 나온 숫자는 분명이 280 이다.
그런데 MySQL DB 테이블에는 숫자가 127로 찍힌다.
순간 불현듯이 떠오른건 테이블의 타입을 tinyint(4) 로 선언하게 기억났다.
tinyint 는 - 128 ~ 127 사이의 값을 DB 테이블에 저장한다.
숫자가 280 인데 DB가 받아들일 수 있는 최대 숫자가 127 이다보니 자동으로 숫자를 변환해서 127로 계속해서 기록을 했던 것이다. ㅠㅠㅠㅠ
이것 때문에 2시간 이상을 헛고생을 했다. 맥이 빠진다. 해결해야 할 사항이 아직도 많은데....
Numeric Types |
Size |
값의 범위 |
tinyint |
1 byte |
-128 ~ 127 |
smallint |
2 bytes |
-32768 ~ 32767 |
mediumint |
3 bytes |
-8388608 ~ 8388607 |
int |
4 bytes |
-2147483648 ~ 2147483647 |
integer |
4 bytes |
|
float |
4 bytes |
-10^38 ~ 10^38-1 |
double |
8 bytes |
-10^308 ~ 10^308-1 |
프로그램의 로직에는 아무런 문제가 없는데, PHP 문법을 잘모르거나 자바스크립트를 잘 몰라서 헤매는 경우가 너무 많다.
그렇다고 집중해서 코딩을 배울 나이도 아니고... 흐미
'SQL' 카테고리의 다른 글
[MySQL] DB/테이블 최적화 (0) | 2015.05.25 |
---|---|
[MySQL] replace (문자열 치환) (0) | 2015.05.12 |
[MySQL] 전화번호 마스킹처리하여 보여주기 (0) | 2015.04.09 |
[SQL] VoC 처리 SQL 및 decode 함수 (0) | 2015.04.08 |
[MySQL] IF Select (0) | 2015.04.03 |