mysql innodb init_connect =’set autocommit=0’가 동작하지 않는다

init_connect  = ‘set autocommit=0’ 가 동작하지 않는다

[mysqld]
init_connect=’SET AUTOCOMMIT=0′

욜케 등록은 했지만 동작하지 않는다.

왜 그럴까.. 버그인가 싶다.

[14:43:21]root@localhost:mysql.sock, (none)> status;
————–
mysql  Ver 14.12 Distrib 5.0.22, for redhat-linux-gnu (x86_64) using readline 5.0


Connection id:          65
Current database:
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ”
Using delimiter:        ;
Server version:         5.0.22-log
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:            /var/lib/mysql/mysql.sock
Uptime:                 3 min 52 sec


Threads: 1  Questions: 1374  Slow queries: 0  Opens: 0  Flush tables: 1  Open tables: 41  Queries per second avg: 5.922
————–


[14:43:22]root@localhost:mysql.sock, (none)> select @@autocommit;
+————–+
| @@autocommit |
+————–+
|            1 |
+————–+
1 row in set (0.00 sec)


[14:43:28]root@localhost:mysql.sock, (none)>

하지만 http://www.mysqlkorea.co.kr/sub.html?mcode=develop&scode=01&m_no=21325&cat1=5&cat2=120&cat3=135&lang=k






    • init_connect

    연결 되어 있는 각 클라이언트를 위해 서버가 실행하는 스트링. 이 스트링은 한 개 또는 그 이상의 SQL 명령문으로 구성된다. 다중 명령문을 지정하기 위해서는, 각각을 세미콜론으로 구분한다. 예를 들면, 각 클라이언트는 디폴트로 오토커미트 (autocommit) 모드를 활성화 해서 사용한다. 오토커미트를 디폴트로 비활성화 시킬 수 있는 글로벌 시스템 변수는 없으나, init_connect를 사용하면 동일한 효과를 얻을 수가 있다:

    SET GLOBAL init_connect=’SET AUTOCOMMIT=0′;

    이 변수를 명령어 라인 또는 옵션 파일에서 설정할 수 있다. 옵션 파일에 안에서 이 변수를 설정하기 위해서는 다음의 라인을 추가한다:

    [mysqld]
    init_connect=’SET AUTOCOMMIT=0′

    SUPER 권한을 가지고 있는 사용자는 init_connect 컨텐츠를 실행할 수 없다는 점을 알아두기 바란다. 이것은 init_connect에 대한 오류 값으로 인해 모든 클라이언트가 연결을 할 수 없는 경우가 발생하지 않도록 하기 위한 것이다. 예를 들면, 이 변수 값에 신텍스 에러가 있는 명령문이 들어 있을 수도 있는데, 이런 일이 발생하면 클라이언트가 연결을 할 수 없게 된다. init_connect SUPER 권한을 가지고 있는 사용자용으로 실행하지 않으면 연결을 열고 init_connect 값을 고치는 것이 가능해진다.



[14:48:10,145]root@www.zeroidle.com:/home/zeroidle/public_html/blog# mysql -uzeroidle -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 147 to server version: 5.0.22-log


Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the buffer.


[14:48:16]zeroidle@localhost:mysql.sock, (none)> select @@autocommit;
+————–+
| @@autocommit |
+————–+
|            0 |
+————–+
1 row in set (0.00 sec)


[14:48:21]zeroidle@localhost:mysql.sock, (none)> quit
Bye

유저아이디로 들어가니 잘된다.


mysql_root가 init_connect를 잘못설정했을경우 접속안되는문제를 방지하기 위함이라는데
어차피 shell_root가 있고 my.cnf를 수정할 수 있는데

왜 막아놓았는지 미쿡오빠들의 생각은 이해할수가 없당.