mysql 설치 디렉터리에서 my.cnf(Windows 시스템용 my.ini) 파일을 찾으세요.
Strict 모드를 켜려면 sql_mode에 STRICT_TRANS_TABLES를 추가하세요. 추가됨 비엄격 모드를 의미합니다. 수정 후 mysql을 다시 시작하세요
예를 들어, 이는 엄격 모드가 켜져 있음을 의미합니다:
sql_mode=NO_ENGINE_SUBSTITUTION, STRICT_TRANS_TABLES
은 지원하지 않습니다. null이 아닌 필드 null 값 삽입
은 자체 증가 필드에 "값" 삽입을 지원하지 않습니다.
은 기본값이 있는 텍스트 필드를 지원하지 않습니다.
Create a 테스트용 데이터 테이블
CREATE TABLE `mytable` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `content` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
레코드 삽입, 이름 값은 null
비엄격 모드에서 실행
mysql> insert into mytable(content) values('programmer'); Query OK, 1 row affected, 1 warning (0.00 sec) mysql> select * from mytable; +----+------+------------+ | id | name | content | +----+------+------------+ | 1 | | programmer | +----+------+------------+ 1 row in set (0.00 sec)
실행이 성공했습니다. name은 자동으로 "
Execute in strict mode
mysql> insert into mytable(content) values('programmer'); ERROR 1364 (HY000): Field 'name' doesn't have a default value
실행에 실패했습니다. 필드 이름은 null 값이 될 수 없다는 메시지가 표시됩니다
Insert" 값을 삽입하세요. for id field
비엄격 모드에서 실행됨
mysql> insert into mytable(id,name,content) value('','fdipzone','programmer'); Query OK, 1 row affected, 1 warning (0.00 sec) mysql> select * from mytable; +----+----------+------------+ | id | name | content | +----+----------+------------+ | 1 | fdipzone | programmer | +----+----------+------------+ 1 row in set (0.00 sec)
Executed 성공적으로
Executed in strict mode
mysql> insert into mytable(id,name,content) value('','fdipzone','programmer'); ERROR 1366 (HY000): Incorrect integer value: '' for column 'id' at row 1
실행이 실패하고 필드 ID가 "
mysql> insert into mytable(id,name,content) value(null,'fdipzone','programmer'); Query OK, 1 row affected (0.00 sec) mysql> select * from mytable; +----+----------+------------+ | id | name | content | +----+----------+------------+ | 1 | fdipzone | programmer | +----+----------+------------+ 1 row in set (0.00 sec)
일 수 없는 경우 실행에 성공한 것입니다." 필드 ID는 null입니다
데이터 테이블 mytable을 생성합니다. 여기서 텍스트 기본값은 default="
비엄격 모드에서 실행
mysql> CREATE TABLE `mytable` ( -> `id` int(11) NOT NULL AUTO_INCREMENT, -> `name` varchar(20) NOT NULL, -> `content` text NOT NULL default '', -> PRIMARY KEY (`id`) -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8; Query OK, 0 rows affected, 1 warning (0.03 sec) mysql> show tables; +------------------------------+ | Tables_in_test_version | +------------------------------+ | mytable | +------------------------------+
성공적인 실행입니다.
엄격 모드에서 실행
mysql> CREATE TABLE `mytable` ( -> `id` int(11) NOT NULL AUTO_INCREMENT, -> `name` varchar(20) NOT NULL, -> `content` text NOT NULL default '', -> PRIMARY KEY (`id`) -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ERROR 1101 (42000): BLOB/TEXT column 'content' can't have a default value
MySQL의 엄격 모드를 사용하면 데이터 보안을 강화할 수 있지만 빈 데이터와의 호환성이 떨어진다는 단점이 있습니다. 코드 품질과 데이터 엄격성을 향상하려면 개발 환경에서 엄격 모드를 사용하는 것이 좋습니다.
위 내용은 mysql 엄격 모드 엄격 모드를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!