2010-06-01 2 views
1

10 진수 (2,1)와 같은 열이 있는데, 잘 작동하지만 10과 같은 값을 저장하려고하면 9.9로 저장됩니다. 구체적인 이유는 무엇입니까?mysql 저장 문제

답변

2

예, 실제로 말하면 2,1을 말하면이 열에는 두 자리 숫자를 저장할 수 있으며 그 중 하나는 소수점 이하 여야합니다. 10.1을 저장하려면 10.1이 총 3 자리이므로 DECIMAL (3,1)을 사용하십시오.

경고 메시지가 표시됩니다. mysql> SHOW CREATE TABLE t \ G ************************** 1 행 ************************* 테이블 : t 테이블 만들기 : t ( a 소수 (2,1) DEFAULT 세트에서 '0.0' ) ENGINE = 이노 DEFAULT 문자셋 = 라틴 1 행 (0.00 초)

의 MySQL> ((a) t VALUES INTO 인서트 (10)); 쿼리 OK 1 열 영향 경고 1 (0.00 초)

MySQL이> 경고 표시가 G \ ************************* ** 1. 행 ************************* 수준 : 경고 코드 : 1264-- 메시지 : 범위를 벗어나는 값 열 세트 '는'1 행에서 1 행 (0.00 초)

MySQL의>

-

편집 : 엄격한 모드에서 실행하는 경우 (http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html#sqlmode_traditional) 실제로 경고를 던질 것입니다.

3

십진법 필드는 너비가 두 자릿수이고 그 숫자 중 하나는 소수점 오른쪽에 있습니다. 이는 소수점 왼쪽에 하나의 숫자 만 있음을 의미합니다. 해당 필드에 "10"을 저장할 수 없습니다.

+0

대신 오류가 발생하는 대신 mySQL이 자동으로 '다운 그레이드'10을 9.9로 변경합니까? 와우 ... –

+0

okie.hanks 도움을 받으십시오. 나는 십진법 전 2 자리와 십진법 후 1을 가르친 구문을 오해했습니다. 내가 잘못 간 곳은 – Hacker

+0

입니다. pjabbott - 예. 이 동작이 바람직하지 않다면 연결을 한 후에'SET SESSION sql_mode = 'TRADITIONAL'을 실행할 수 있습니다. – Hammerite