MySQL Workbench, начните с выключенной автоматической фиксации

20511
Denis Sadowski

Я использую MySQL Workbench 5.2, и всякий раз, когда я подключаюсь к базе данных, включается автоматическая фиксация.

Есть ли способ изменить поведение по умолчанию, чтобы отключить автоматическую фиксацию, я забыл об этом и не хочу обновлять проблемную фиксацию только потому, что забыл отключить ее вручную.

6
Обновлен мой ответ. Требуется перезагрузка :( RolandoMySQLDBA 12 лет назад 0
Вы перезапустили mysql после добавления autocommit = 0 в my.ini? RolandoMySQLDBA 12 лет назад 0
Я перезапустил mysql, и после этого, похоже, это не помогло, я перезапустил всю машину. Denis Sadowski 12 лет назад 0
Обновлен мой ответ относительно MySQL Workbench. RolandoMySQLDBA 12 лет назад 0

4 ответа на вопрос

4
RolandoMySQLDBA

Добавьте это в /etc/my.cnf (Linux) или my.ini (Windows)

[mysqld] autocommit=0 

Требуется перезапуск mysql !!! :(

ОБНОВЛЕНИЕ 2011-08-03 12:18 ПО ВОСТОЧНОМУ ВРЕМЕНИ

В MySQL Workbench вы должны убедиться, что мастер изменения данных включен. Вот почему:

Включить мастер фиксации изменений данных. В редакторе SQL при редактировании данных таблицы и нажатии кнопки «Применить изменения к данным» запускается мастер, который поможет вам применить ваши изменения. Это дает вам возможность просмотреть SQL, который будет применен к действующему серверу для внесения запрошенных изменений. Если этот параметр не выбран, изменения будут просто применены к серверу, без отображения мастера и без возможности просмотра изменений, которые будут внесены.

Вот как это проверить:

  • Откройте MySQL Workbench
  • Нажмите Редактировать в строке главного меню
  • Нажмите Настройки под Редактировать
  • Нажмите вкладку редактора SQL
  • Ищите последний флажок под результатами запроса

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

Если этот флажок не установлен, данные фиксируются, минуя протоколы автоматической отправки MySQL.

I tried running both SET GLOBAL autocommit = 0 and SET GLOBAL autocommit = 'OFF' from within MySQL Workbench after connecting to a db and I got the following error: Error Code: 1228. Variable 'autocommit' is a SESSION variable and can't be used with SET GLOBAL Denis Sadowski 12 лет назад 0
I tried a restart, and when I run "select @@autocommit" its is still set to 1. I placed the my.ini file under C:/, C:/Windows, and the Workbench program files directories and none of them helped. :( Denis Sadowski 12 лет назад 0
`autocommit = 0` не работает` init_connect = "SET AUTOCOMMIT = 0" `, который рекомендуют документы, также не работает Noah Yetter 12 лет назад 0
Это просто неверно. Во-первых, мастер представляет собой отдельный слой «защиты»; если вы отмените операцию в мастере, то SQL вообще не будет выполняться (и тогда нечего коммитить), а если он будет одобрен, он будет выполнен. После того, как он был выполнен (с помощью мастера или нет), параметр "autocommit" определит, произойдет ли автоматическая фиксация или нет. Второй ... (следующий комментарий) Eyal Roth 9 лет назад 0
Во-вторых, если клиент (любой клиент) не переопределяет параметр «autocommit», он будет определяться глобальным параметром, определенным в БД (в MySQL по умолчанию установлено значение TRUE). Клиент может переопределить параметр в каждом сеансе (запустить команду SQL) или каким-либо образом изменить поведение клиента по умолчанию. Метод в ответ не сработает. Я добавлю правильный ответ. Eyal Roth 9 лет назад 0
1
Vijay

Попробуйте SET SESSION autocommit = 0;это переключить флаг автоматической фиксации на OFF в этом сеансе.

Это сработало для меня.

1
philip

Начиная с MySQL Workbench 6.0.0, вы можете установить предпочтение «Оставить режим автоматической фиксации включенным по умолчанию». Установите его в Предпочтения -> SQL-запросы -> Общие.

1
Eyal Roth

Я начну с упоминания моего собственного вопроса о переполнении стека около года назад, и это примерно такой же вопрос: как настроить клиентскую конфигурацию для MySQL Workbench без установленного сервера?

Как уже упоминалось в ответе здесь, начиная с MySQL WB 6 вы можете установить параметр «оставить режим автоматической фиксации по умолчанию включенным» в «Предпочтения»> «SQL-запросы»> «Общие».

Для более ранних версий может быть возможно настроить файл «my.ini».
Почему только «возможно»? Потому что раньше он работал у меня (WB 5?), Но сейчас не работает на WB 6.3.

Во-первых, нам нужно выяснить, где WB ищет файл. Есть несколько вопросов на эту тему, поэтому вам, возможно, придется немного поиграться (честно говоря, это грязная проблема).
Наилучший способ, если он доступен, - перейти в меню «Сервер» и нажать «Файл опций». Он либо скажет вам, что файл не существует (и укажет вам путь, который ищет), либо откроет конфигурацию и укажет путь внизу.

Теперь нам нужно добавить следующую строку в файл «my.ini» в [client]разделе (добавьте его также, если он не существует):

init-command="SET autocommit=0"