왜 MariaDBB는 smallint에 텍스트를 삽입할 수 있습니까?
서버 프로바이더가 MYSQL을 MariaDB로 대체했습니다.MYSQL은 다르게 동작하고 있는 것 같습니다."SHOW GLOBAL VARILE LIKE '%version%"를 실행하면 이 서버에 대한 정보가 다음과 같습니다.
Variable_name 값
protocol_version 10
slave_type_informations
버전 5.5.58-MariaDB
version_comment MariaDB Server
version_machine x86_64
version_compile_os Linux
SQL 문 "INSERT INTO years" (년)Year
) VALUES('test');"는 Aria 또는 MyISAM 엔진을 사용하여 작은 입력 필드에 0을 삽입합니다.
로컬 개발 시스템에서 "SHOW GLOBAL VARILE LIKE '%version%'를 실행하면 다음과 같은 메시지가 나타납니다.
Variable_name 값
innodb_version 5.6.21
protocol_version 10
slave_type_informations
버전 5.6.21-log
version_comment MySQL Community Server(GPL)
version_machine x86_64
version_compile_os Win64
동일한 SQL 문 "INSERT INTO years"Year
) VALUES('test');"는 MYISAM 엔진을 사용하여 오류 코드: 1366 "1행의 'Year' 열에 대해 잘못된 정수 값 'test'를 생성합니다. 이는 예상한 대로이며 기대했던 것입니다.
이게 왜 이런지 누가 좀 밝혀줄 수 있나요?
제대로 된 답변을 드리겠습니다.이는 두 가지 이유로 발생합니다.하나는 유형 변환입니다.주요 원인은 SQL 모드 설정 섹션에 있는 STICT_MODE 설정입니다.
Strict Mode 상태
STRICT_TRANS_TAB 중 적어도1개가 있는 모드LES 또는 STRICT_ALL_TABLES가 네이블로 되어 있는 것을 strict 모드라고 부릅니다.strict 모드가 설정되지 않은 경우(버전 <= MariaDB 10.2.3의 기본값), MariaDB는 잘못된 값(예: 너무 긴 문자열 잘라내기 또는 범위를 벗어난 숫자 값 조정)을 자동으로 조정하여 경고를 생성합니다.
strict 모드를 설정하면(MariaDB 10.2.4에서 디폴트로), 스테이트먼트는 실패하고 에러가 반환됩니다.IGNORE 키워드는 에러를 경고로 변환하기 위해 strict 모드가 설정되어 있는 경우에 사용할 수 있습니다.
언급URL : https://stackoverflow.com/questions/49198656/why-does-mariadbb-allow-insert-of-text-into-smallint
'sourcecode' 카테고리의 다른 글
Python의 문자열 목록에 동일한 문자열 추가 (0) | 2022.09.15 |
---|---|
마리아답의 직업.제어 프로세스가 오류 코드와 함께 종료되었기 때문에 서비스가 실패했습니다. (0) | 2022.09.15 |
장고에 민달팽이 어떻게 만들어요? (0) | 2022.09.14 |
평면상의 4개의 점이 직사각형을 형성하는지 알아보시겠습니까? (0) | 2022.09.14 |
C# 어플리케이션에서 Mariadb로의 접속 (0) | 2022.09.14 |