혹시 디비 전문가 계십니까? 정보
혹시 디비 전문가 계십니까?본문
안녕하세요 유창화입니다.
저는 디비는 그렇게 깊게 알지 못하는 사람입니다.
그래서 강좌를 진행하면서 어설픈 선지식 보다는
정확한 정보 전달을 위하여 조언을 구하고자 합니다.
예 ) SET SESSION sql_mode = '';
1. SESSION 이 의미 하는 바는 무엇입니까?
2. sql_mode 로 들어갈수 있는 값들에는 어떤것이 있으며,
그것들을 설정함으로 인해서 mysql 에서 어떤 처리 변화가 있는지 상세 하게 알고 싶습니다.
읽어주셔서 감사합니다.
추천
0
0
댓글 12개
디비의 전문가는 아니지만
검색으로 나온 결과는 전달해드릴께요.
http://www.mysqlkorea.com/sub.html?mcode=manual&scode=01_1&m_no=22283&cat1=752&cat2=790&cat3=868&lang=k
검색으로 나온 결과는 전달해드릴께요.
http://www.mysqlkorea.com/sub.html?mcode=manual&scode=01_1&m_no=22283&cat1=752&cat2=790&cat3=868&lang=k
네에
관심과 댓글 감사합니다
관심과 댓글 감사합니다
1.session 은 해당 세션변수를 의미합니다. 각 클라이언트가 mysql 서버에 접근할때마다 실행이 되며
위와 같이 선언하거나 또는 my.cnf 파일에서 sql_mode 를 추가해서 글로벌 변수로 사용할수 있습니다
2. sql_mode 에 들어가는 값들은 종류가 많아서
http://dev.mysql.com/doc/refman/5.0/en/sql-mode.html 여기를 보시거나
번역판인 http://www.mysqlkorea.com/sub.html?mcode=develop&scode=01&lang=k&m_no=21330&cat1=5&cat2=120&cat3=138 여기를 참조하시면 됩니다.
위와 같이 선언하거나 또는 my.cnf 파일에서 sql_mode 를 추가해서 글로벌 변수로 사용할수 있습니다
2. sql_mode 에 들어가는 값들은 종류가 많아서
http://dev.mysql.com/doc/refman/5.0/en/sql-mode.html 여기를 보시거나
번역판인 http://www.mysqlkorea.com/sub.html?mcode=develop&scode=01&lang=k&m_no=21330&cat1=5&cat2=120&cat3=138 여기를 참조하시면 됩니다.
댓글 고마워~
찾아보니 mysql 5.6.6 버전부터 sql_mode 가 설정되어서 들어간거군요..
if(version_compare(mysql_get_server_info(), '5.6.6', '>=') == 1) {
@mysql_query("SET SESSION sql_mode = ''");
$mysql_set_mode = 'true';
}
http://ncube.net/10496
http://egloos.zum.com/ndba/v/3443114
위에 링크에 설명 잘되어 있습니다.
덕분에 하나 배우고 가네요~ 감사합니다.
if(version_compare(mysql_get_server_info(), '5.6.6', '>=') == 1) {
@mysql_query("SET SESSION sql_mode = ''");
$mysql_set_mode = 'true';
}
http://ncube.net/10496
http://egloos.zum.com/ndba/v/3443114
위에 링크에 설명 잘되어 있습니다.
덕분에 하나 배우고 가네요~ 감사합니다.
좋은 내용 감사합니다.
선생님 지식으로 선생님께서 표현을 하신다면..
이는 곧.. 현재로서는 정답입니다.
5.1 MySQL 자료를 모를리 없으셔서요..
세션만 들어가면 근접을 못합니다.
정규식만 들어가도 통 모르겠습니다. 너무 부족합니다.
강좌.. 선생님 지식과 마음으로 표현해 주세요..
더 이상.. 바랄 것이 없습니다.
그저.. 죄송하고, 감사하고.. 너무 고맙고..
이것이.. 진심입니다.
고맙습니다.
이는 곧.. 현재로서는 정답입니다.
5.1 MySQL 자료를 모를리 없으셔서요..
세션만 들어가면 근접을 못합니다.
정규식만 들어가도 통 모르겠습니다. 너무 부족합니다.
강좌.. 선생님 지식과 마음으로 표현해 주세요..
더 이상.. 바랄 것이 없습니다.
그저.. 죄송하고, 감사하고.. 너무 고맙고..
이것이.. 진심입니다.
고맙습니다.
몸들 바를 모르게 말씀하시네요.
아무튼 고맙습니다.
아무튼 고맙습니다.
MYSQL 서버의 환경설정값을 바꾸는 거에요. 해당 mysql 연결에서만 적용되는 것.
SET SESSION 환경설정이름 = '값'; 으로 쓰고 설정을 바꿉니다. 모두 되는 건 아니고 허용되는 설정값들이 있어요.
보통 SET SESSION old_passwords = TRUE, 이나 SET SESSION time_zone = '+09:00' 만 쓰이는 것 같아요.
예제)
SELECT NOW(); // SET SESSION time_zone = '+09:00' ; SELECT NOW();
SELECT PASSWORD('aa'); // SET SESSION old_passwords = TRUE; SELECT PASSWORD('aa');
SET SESSION 환경설정이름 = '값'; 으로 쓰고 설정을 바꿉니다. 모두 되는 건 아니고 허용되는 설정값들이 있어요.
보통 SET SESSION old_passwords = TRUE, 이나 SET SESSION time_zone = '+09:00' 만 쓰이는 것 같아요.
예제)
SELECT NOW(); // SET SESSION time_zone = '+09:00' ; SELECT NOW();
SELECT PASSWORD('aa'); // SET SESSION old_passwords = TRUE; SELECT PASSWORD('aa');
좋은 내용
감사합니다. ^^
잘 지내죠?
감사합니다. ^^
잘 지내죠?
디비 연결시 sql-mode 를 초기화해주는 주된 이유는 mysql 서버 설정에서 sql-mode 에 STRICT_ALL_TABLES, STRICT_TRANS_TABLES 옵션을 끄기 위해서 입니다.
strct 모드로 동작하면 쿼리에 대해 엄격한 검사를 하므로, 필드 타입이 맞지 않거나 필드 길이보다 데이터가 길게 들어간 경우 등 모두 에러가 발생합니다.
따라서 서버에 따라 위 값들이 기본 활성화되어 있는 경우, 서버 설정을 변경하지 않고 디비 연결에서 해당 값을 제어하는 형태입니다.
'set names utf8' 쿼리처럼 서버 설정 변경없이, 디비 연결단에서 제어하는 형태와 유사합니다.
참고) https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_strict_trans_tables
즉, 위 답변처럼 mysql 버전이 5.6.6 이상일 때 체크하는건 잘못된 방법이고요. (5.0.2 부터 지원하는 기능임)
꼭 필요하다면 다음 쿼리를 통해 현재 값을 가져와 비교해야 합니다.
select @@sql_mode;
strct 모드로 동작하면 쿼리에 대해 엄격한 검사를 하므로, 필드 타입이 맞지 않거나 필드 길이보다 데이터가 길게 들어간 경우 등 모두 에러가 발생합니다.
따라서 서버에 따라 위 값들이 기본 활성화되어 있는 경우, 서버 설정을 변경하지 않고 디비 연결에서 해당 값을 제어하는 형태입니다.
'set names utf8' 쿼리처럼 서버 설정 변경없이, 디비 연결단에서 제어하는 형태와 유사합니다.
참고) https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_strict_trans_tables
즉, 위 답변처럼 mysql 버전이 5.6.6 이상일 때 체크하는건 잘못된 방법이고요. (5.0.2 부터 지원하는 기능임)
꼭 필요하다면 다음 쿼리를 통해 현재 값을 가져와 비교해야 합니다.
select @@sql_mode;
상세한 답변 고맙습니다