열 데이터 유형의 허용 범위를 초과하는 MySQL 값의 처리는 SQL 모드에 따라 다음과 같이 다릅니다. -
(A) SQL 엄격 모드 활성화 - 엄격 SQL 모드가 활성화된 경우 , MySQL은 범위 값을 입력하고 오류를 반환합니다. 이 경우 일부 또는 모든 값의 삽입이 실패합니다.
예를 들어 데이터 유형이 TINYINT 및 UNSIGNED TINYINT인 두 개의 열이 있는 테이블을 만들었습니다.
mysql> Create table counting(Range1 Tinyint, Range2 Tinyint Unsigned); Query OK, 0 rows affected (0.14 sec)
이제 다음 명령의 도움으로 엄격한 SQL 모드를 활성화했습니다.
mysql> Set SQL_MODE ='traditional'; Query OK, 0 rows affected (0.00 sec)
이제 범위를 벗어난 값을 열에 삽입하려고 하면 MySQL은 오류를 반영하고 두 삽입 모두 실패합니다. 다음 쿼리 확인 -
mysql> Insert into Counting(Range1, Range2) Values(256,256); ERROR 1264 (22003): Out of range value for column 'Range1' at row 1 mysql> Select * from counting; Empty set (0.00 sec)
(B) SQL 엄격 모드 비활성화 - 제한적 SQL 모드가 비활성화되면 MySQL은 값을 열 데이터 유형의 적절한 끝점으로 자르고 결과 값을 누적합니다. MySQL은 정리로 인해 발생하는 열 할당 변환 결과에 대한 경고를 반영합니다.
예를 들어 SQL 엄격 모드를 비활성화한 후 열에 값을 삽입하면 MySQL은 경고를 반영하고 값을 적절한 엔드포인트로 잘라낸 후 저장합니다. 다음 쿼리를 통해 이해할 수 있습니다 -
mysql> Set SQL_MODE = ''; Query OK, 0 rows affected (0.00 sec) mysql> Insert Into Counting(Range1,Range2) values (256,256); Query OK, 1 row affected, 2 warnings (0.02 sec) mysql> Show Warnings; +---------+------+-------------------------------------------------+ | Level | Code | Message | +---------+------+-------------------------------------------------+ | Warning | 1264 | Out of range value for column 'Range1' at row 1 | | Warning | 1264 | Out of range value for column 'Range2' at row 1 | +---------+------+-------------------------------------------------+ 2 rows in set (0.00 sec) mysql> Select * from Counting; +--------+--------+ | Range1 | Range2 | +--------+--------+ | 127 | 255 | +--------+--------+ 1 row in set (0.00 sec)
위 내용은 MySQL은 범위를 벗어난 값을 어떻게 처리합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!