>  기사  >  데이터 베이스  >  mysql 엄격 모드 엄격 모드에 대한 설명

mysql 엄격 모드 엄격 모드에 대한 설명

jacklove
jacklove원래의
2018-06-09 09:47:442210검색

1. Strict 모드를 켜고 끄는 방법

sql_mode에서 my.cnf

(Windows 시스템용 my.ini) 파일

을 찾아 mysql 설치에 STRICT_TRANS_TABLES을 추가하세요. 추가되지 않은 경우에는 엄격하지 않은 모드를 의미합니다. 예를 들어 엄격 모드가 켜져 있음을 의미합니다. sql_mode=NO_ENGINE_SUBSTITUTION,


2. 엄격 모드 기능 설명

null이 아닌 필드에 null 값 삽입을 지원하지 않습니다.

  • 자체 증가 필드에 "값" 삽입을 지원하지 않습니다

  • 않습니다 기본값이 있는 텍스트 필드 지원

  • 3 .예:

테스트를 용이하게 하기 위한 데이터 테이블 만들기
<span style="color: rgb(0, 0, 0);">CREATE TABLE `mytable` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `content` text NOT NULL, PRIMARY KEY (`id`)<br/>) ENGINE=InnoDB DEFAULT CHARSET=utf8;</span>

1.not null 필드 삽입 null 값 테스트

레코드 삽입, name 값이 null입니다

In non-strict 모드에서 실행됨

<span style="color: rgb(0, 0, 0);">mysql> insert into mytable(content) values(&#39;programmer&#39;);<br/>Query OK, 1 row affected, 1 warning (0.00 sec)mysql> select * from mytable;<br/>+----+------+------------+| id | name | content    |<br/>+----+------+------------+|  1 |      | programmer |<br/>+----+------+------------+1 row in set (0.00 sec)</span>
이 성공적으로 실행되었으며 name 값이 자동으로 "

로 변환되었습니다. 엄격 모드에서 실행됨

<span style="color: rgb(0, 0, 0);">mysql> insert into mytable(content) values(&#39;programmer&#39;);ERROR 1364 (HY000): Field &#39;name&#39; doesn&#39;t have a default value</span>
실행 실패, 프롬프트 필드 이름은 null 값이 될 수 없습니다.

2. 자동 증가 필드에 대한 "값 테스트" 삽입

삽입 "ID 필드 값

비엄격 모드에서 실행

<span style="color: rgb(0, 0, 0);">mysql> insert into mytable(id,name,content) value(&#39;&#39;,&#39;fdipzone&#39;,&#39;programmer&#39;);<br/>Query OK, 1 row affected, 1 warning (0.00 sec)mysql> select * from mytable;<br/>+----+----------+------------+| id | name     | content    |<br/>+----+----------+------------+|  1 | fdipzone | programmer |<br/>+----+----------+------------+1 row in set (0.00 sec)</span>
성공적으로 실행

엄격 모드에서 실행

<span style="color: rgb(0, 0, 0);">mysql> insert into mytable(id,name,content) value(&#39;&#39;,&#39;fdipzone&#39;,&#39;programmer&#39;);<br/>ERROR 1366 (HY000): Incorrect integer value: &#39;&#39; for column &#39;id&#39; at row 1</span>
실행에 실패했습니다. 필드 ID가 "
<span style="color: rgb(0, 0, 0);">mysql> insert into mytable(id,name,content) value(null,&#39;fdipzone&#39;,&#39;programmer&#39;);<br/>Query OK, 1 row affected (0.00 sec)mysql> select * from mytable;<br/>+----+----------+------------+| id | name     | content    |<br/>+----+----------+------------+|  1 | fdipzone | programmer |<br/>+----+----------+------------+1 row in set (0.00 sec)</span>

필드 ID가 NULL이면 성공적으로 실행할 수 있습니다.

3. 텍스트 필드 기본값 테스트

데이터 테이블 mytable을 생성합니다. 텍스트가 기본값을 설정합니다. default=”

비엄격 모드에서 실행

<span style="color: rgb(0, 0, 0);">mysql> CREATE TABLE `mytable` (    ->  `id` int(11) NOT NULL AUTO_INCREMENT,    ->  `name` varchar(20) NOT NULL,    ->  `content` text NOT NULL default &#39;&#39;,    ->  PRIMARY KEY (`id`)    -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;Query OK, 0 rows affected, 1 warning (0.03 sec)mysql> show tables;<br/>+------------------------------+| Tables_in_test_version       |<br/>+------------------------------+| mytable                      |<br/>+------------------------------+</span>
성공적으로 실행

Executed in strict 모드

<span style="color: rgb(0, 0, 0);">mysql> CREATE TABLE `mytable` (    ->  `id` int(11) NOT NULL AUTO_INCREMENT,    ->  `name` varchar(20) NOT NULL,    ->  `content` text NOT NULL default &#39;&#39;,    ->  PRIMARY KEY (`id`)    -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;<br/>ERROR 1101 (42000): BLOB/TEXT column &#39;content&#39; can&#39;t have a default value</span>
실행에 실패했습니다. 콘텐츠 필드가 TEXT 유형이고 기본값을 사용할 수 없다는 메시지가 표시됩니다. 요약하자면, mysql 엄격 모드를 사용하면 데이터를 더욱 안전하고 엄격하게 만들 수 있지만, 데이터베이스 내 빈 데이터의 호환성이 떨어진다는 단점이 있습니다. 코드 품질과 데이터 엄격성을 향상하려면 개발 환경에서 엄격 모드를 사용하는 것이 좋습니다.


이 기사에서는 mysql 엄격 모드 엄격 모드에 대해 설명하고 있나요? 더 많은 관련 권장 사항을 보려면 PHP 중국어 웹사이트를 참고하세요.

관련 권장사항:

php에서 폭발을 사용하여 문자열을 분할할 때 초보자가 쉽게 간과하는 문제에 대한 설명

정보 mysql 교환에 있는 두 개의 데이터 열 테이블 방법론 설명

php

을 통해 0~1의 임의 소수점 생성 방법을 생성하는 방법

위 내용은 mysql 엄격 모드 엄격 모드에 대한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.