- 전체
- Sample DB
- database modeling
- [표준 SQL] Standard SQL
- G-SQL
- 10-Min
- ORACLE
- MS SQLserver
- MySQL
- SQLite
- postgreSQL
- 데이터아키텍처전문가 - 국가공인자격
- 데이터 분석 전문가 [ADP]
- [국가공인] SQL 개발자/전문가
- NoSQL
- hadoop
- hadoop eco system
- big data (빅데이터)
- stat(통계) R 언어
- XML DB & XQuery
- spark
- DataBase Tool
- 데이터분석 & 데이터사이언스
- Engineer Quality Management
- [기계학습] machine learning
- 데이터 수집 및 전처리
- 국가기술자격 빅데이터분석기사
- 암호화폐 (비트코인, cryptocurrency, bitcoin)
MySQL [MySQL] MySQL Strict mode 끄기/켜기
2023.05.05 17:27
[MySQL] MySQL Strict mode 끄기/켜기
MySQL Strict mode 끄기/켜기
Strict mode
MySQL 의 CHAR 나 VARCHAR 컬럼에 데이타를 입력할 경우 컬럼 사이즈보다 큰 데이타가 입력됐을때 당연히 DB 차원에서 insert 가 안 되는줄 알았다.
그런데 특정 서버에서는 사이즈보다 큰 부분이 truncate 되고 insert 되어 찾아보니 MySQL 서버의 sql_mode 라는 설정의 strict mode에 따라 데이타 검증을 수행하는데 5.5의 경우 기본적으로 이 모드가 꺼져 있다고 한다.
이뿐만이 아니라 다음과 같이 unsigned 컬럼에 -1 이 입력되면 자동으로 0 으로 변환하는 만행을 저지른다.
MySQL 버전마다 다르겠지만 현재 사용하고 있는 5.5.40 의 기본 sql_mode 설정은 '' 이며 (https://dev.mysql.com/doc/refman/5.5/en/server-options.html#option_mysqld_sql-mode)
이 경우 STRICT_ALL_TABLES, STRICT_TRANS_TABLES 가 꺼지며 CHAR, VARCHAR 의 크기를 초과하는 데이타 입력시 에러를 내지 않고 잘리게 된다.
개인적인 생각으로는 이런 데이타의 무결성을 app 에서 하는것 보다는 DBMS 에서 체크하는게 더 편하고 이를 위해 DBMS 를 쓰는 것이므로 비록 속도가 저하되더라도 STRICT_MODE 로 쓰는게 좋다고 보다.
그러면 STRICT MODE 로 설정을 변경해 보자.
현재 설정은 mysql 의 console 에서 확인할 수 있다.
이제 /etc/my.cnf 에 다음 내용을 추가하고 MySQL 을 재구동하면 설정이 반영된다.
STRICT MODE 로 전환되었다면 다음 SQL 문은 오류가 나고 정상적으로 동작하지 않는다.
MySQL 5.7 부터는 STRICT_MODE 가 기본 설정이라고 하니 별도의 설정 작업이 필요없다.
non strict mode 사용
기존 app 를 최신 MySQL 에서 구동해야 하는 경우 strict mode 에 맞게 수정할 시간이 부족하다면 어쩔수없이 strict mode 를 끄고 서서히 수정하는게 필요하다.
만약 5.7 을 사용한다면 명시적으로 sql_mode 에 다음과 같이 non strict mode 를 지정해야 한다.
설정이 끝났으면 mysql 을 재구동하고 sql_mode 를 확인한다.
Laravel 의 strict mode
laravel framework 는 기본적으로 MySQL 의 strict mode 를 켜며 자세한 내용은 아래 gist 의 sql_mode 항목을 참고
Ref
[출처] https://www.lesstif.com/dbms/mysql-strict-mode-24445406.html
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 공지 | 오라클 기본 샘플 데이터베이스 | 졸리운_곰 | 2014.01.02 | 86580 |
| 공지 | [SQL컨셉] 서적 "SQL컨셉"의 샘플 데이타 베이스 SAMPLE DATABASE of ORACLE | 가을의 곰을... | 2013.02.10 | 78981 |
| 공지 | [G_SQL] Sample Database | 가을의 곰을... | 2012.05.20 | 95734 |

