>데이터 베이스 >MySQL 튜토리얼 >mysql에서 sql_mode 설정을 수정하는 방법을 가르쳐주세요.

mysql에서 sql_mode 설정을 수정하는 방법을 가르쳐주세요.

醉折花枝作酒筹
醉折花枝作酒筹앞으로
2021-08-05 09:22:513534검색

sql_mode는 간과하기 쉬운 변수입니다. 기본값은 null입니다. 이 설정에서는 일부 불법적인 데이터 삽입을 허용하는 등 일부 불법적인 작업이 허용될 수 있습니다. 프로덕션 환경에서는 이 값을 엄격 모드로 설정해야 하므로 개발 및 테스트 단계에서 문제를 발견할 수 있도록 개발 및 테스트 환경의 데이터베이스도 설정해야 합니다.

1 고급 권한은 다음 연결에만 적용되고, 현재 세션에는 영향을 주지 않으며, MySQL이 다시 시작되면 무효화됩니다. 왜냐하면 MySQL은 필요할 경우 구성 파일의 해당 값을 다시 읽기 때문입니다. 영구적으로 유지하려면 구성 파일의 값을 수정해야 합니다.

select @@session.sql_mode;
select @@global.sql_mode;

저장하고 종료하고 서버를 다시 시작하면 영구적으로 적용됩니다.

sql_mode의 일반적인 값은 다음과 같습니다.

ONLY_FULL_GROUP_BY


GROUP BY 집계 작업의 경우 SELECT의 열이 나타나지 않는 경우 GROUP BY에서 열이 GROUP BY 절에 없기 때문에 이 SQL은 불법입니다

NO_AUTO_VALUE_ON_ZERO

이 값은 자동 증가 열의 삽입에 영향을 미칩니다. 기본 설정에서 0 또는 NULL을 삽입하면 다음 자동 증가 값이 생성되는 것을 나타냅니다. 이 옵션은 사용자가 0 값을 삽입하려고 하고 열이 자동 증가하는 경우 유용합니다.

STRICT_TRANS_TABLES

이 모드에서는 트랜잭션 테이블에 값을 삽입할 수 없으면 현재 작업이 중단되고 비트랜잭션 테이블에는 제한이 없습니다.

NO_ZERO_IN_DATE

엄격 모드에서는 , 허용되지 않음 날짜 또는 월이 0인 경우 '0000-00-00'을 제외하고는 오류가 보고됩니다.

NO_ZERO_DATE

이 값을 설정하세요. , mysql 데이터베이스는 0 날짜 삽입을 허용하지 않습니다. 0 날짜 삽입은 경고 대신 오류를 발생시킵니다. 연도, 월, 일 중 0이 아닌 항목이 있으면 '0000-00-00'만 오류가 발생합니다

ERROR_FOR_pISION_BY_ZERO

INSERT 또는 UPDATE 과정에서 데이터를 0으로 나누면 , 경고 대신 오류가 생성됩니다. 모드가 지정되지 않은 경우 데이터를 0으로 나눌 때 MySQL은 NULL을 반환합니다.

update table set num = 5/0, 모드가 설정되어 있지 않으면 오류가 보고됩니다. num 값은 null입니다.

NO_AUTO_CREATE_USER

GRANT가 빈 비밀번호를 사용하여 사용자를 생성하지 못하도록 합니다.

NO_ENGINE_SUBSTITUTION

필요한 스토리지 엔진이 비활성화되거나 컴파일되지 않으면 오류가 발생합니다. 이 값이 설정되지 않으면 기본 스토리지 엔진이 대신 사용되며 예외가 발생합니다.

PIPES_AS_CONCAT

는 Oracle 데이터베이스와 동일한 OR 연산자 대신 문자열 연결 연산자로 처리됩니다. 문자열 접합 함수 Concat

ANSI_QUOTES

ANSI_QUOTES를 활성화한 후에는 식별자로 해석되므로 큰따옴표를 사용하여 문자열을 인용할 수 없습니다.

관련 권장 사항: "mysql tutorial

"

위 내용은 mysql에서 sql_mode 설정을 수정하는 방법을 가르쳐주세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제