Отключение автозапуска mysql в php не работает - PullRequest
1 голос
/ 03 января 2012

Конечно, я могу делать что-то не так, но я не совсем понимаю, почему и как.

Я хочу отключить автокоммит в php скрипте. это потому, что мой личный php MySQL Framework работает таким образом. все же как-то автокоммит нельзя отключить. Я использую Mysqli с таблицами engine = InnoDB, и я попробовал функциональность mysqli :: autocommit, а также операторы mysql для global и session.

все приводит к одному и тому же ответу: автокоммит еще включен. Никаких ошибок, говорящих о том, что я использовал неправильное заявление, не возвращается. запросы возвращают истину, попытались зафиксировать, вернули истину.

есть что-нибудь, что я здесь скучаю? autocommit должен быть отключен во время выполнения, потому что хост, на котором он будет работать, не позволяет отключить его в настройках сервера:)

Ответы [ 2 ]

2 голосов
/ 03 января 2012

http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_autocommit

По умолчанию клиентские подключения начинаются с autocommit, установленного на 1. Чтобы клиенты начинали со значения по умолчанию 0, установите системную переменную init_connect сервера:

SET GLOBAL init_connect='SET autocommit=0';

Переменная init_connect также может быть установлена ​​в командной строке или в файле параметров. Чтобы установить переменную, как только что показано, с помощью файла параметров, включите эти строки:

[mysqld]
init_connect='SET autocommit=0'

Также просмотрите следующую ссылку , есть способ вернуть логическое значение, которое укажет, был ли коммит успешно включен / выключен.

Также используйте @@autocommit для определения текущего состояния автоматической фиксации.

0 голосов
/ 03 января 2012

Спасибо вам всем, я решил свою проблему! Я как-то понял, что когда вы явно не делаете откат или закрываете соединение, вставки фиксируются. с помощью register_shutdown_function вы можете выполнить откат или закрыть соединение.

еще раз, спасибо за вашу помощь!

...