Код ошибки MySQL: 1175 во время UPDATE в MySQL Workbench

Я пытаюсь обновить столбец visited, чтобы дать ему значение 1. Я использую workbench MySQL, и я пишу инструкцию в редакторе SQL изнутри рабочего места. Я пишу следующую команду:

UPDATE tablename SET columnname=1;

Это дает мне следующую ошибку:

Вы используете безопасный режим обновления, и вы пытались обновить таблицу без WHERE, который использует столбец KEY. Чтобы отключить безопасный режим, переключите параметр....

Я выполнил инструкции, и я отключил опцию safe update в меню Edit, затем Preferences, затем SQL Editor. Такая же ошибка все еще появляется, и я не могу обновить это значение. Пожалуйста, скажите мне, что не так?

Ответ 1

Я нашел ответ. Проблема заключалась в том, что я должен предшествовать имени таблицы с именем схемы. то есть команда должна быть:

UPDATE schemaname.tablename SET columnname=1;

Спасибо всем.

Ответ 2

Похоже, ваш сеанс MySql имеет параметр safe-updates. Это означает, что вы не можете обновлять или удалять записи без указания ключа (например, primary key) в предложении where.

Try:

SET SQL_SAFE_UPDATES = 0;

Или вы можете изменить свой запрос, чтобы следовать правилу (используйте primary key в where clause).

Ответ 3

Перед выполнением команды UPDATE выполните следующие действия: В Workbench MySQL

  • Перейдите к EditPreferences
  • Перейдите на вкладку "SQL Editor" и uncheck "Безопасные обновления" check box
  • QueryReconnect to Server//выход из системы, а затем вход в систему
  • Теперь выполните ваш SQL-запрос

стр., нет необходимости перезапускать демон MySQL!

Ответ 4

SET SQL_SAFE_UPDATES=0;
UPDATE tablename SET columnname=1;
SET SQL_SAFE_UPDATES=1;

Ответ 5

Все, что необходимо: Запустите новый запрос и запустите:

SET SQL_SAFE_UPDATES = 0;

Затем: Запустите запрос, который вы пытались запустить, который ранее не работал.

Ответ 6

Нет необходимости устанавливать SQL_SAFE_UPDATES в 0, я бы очень не рекомендовал делать это таким образом. SAFE_UPDATES по умолчанию включен для ПРИЧИНЫ. Вы можете управлять автомобилем без ремней безопасности и прочего, если вы понимаете, что я имею в виду;) Просто добавьте в предложение WHERE значение KEY, которое соответствует всему, как первичный ключ, по сравнению с 0, поэтому вместо записи:

UPDATE customers SET countryCode = 'USA'
    WHERE country = 'USA';               -- which gives the error, you just write:

UPDATE customers SET countryCode = 'USA'
    WHERE (country = 'USA' AND customerNumber <> 0); -- Because customerNumber is a primary key you got no error 1175 any more.

Теперь вы можете быть уверены, что каждая запись (ВСЕГДА) обновляется, как вы ожидаете.

Ответ 7

Код ошибки: 1175. Вы используете безопасный режим обновления, и вы попытались обновить таблицу без WHERE, которая использует столбец KEY. Чтобы отключить безопасный режим, переключите опцию в Preferences → Editor SQL и снова подключите.

Отключить "Безопасный режим обновления"

SET SQL_SAFE_UPDATES = 0;
UPDATE options SET title= 'kiemvieclam24h' WHERE url = 'http://kiemvieclam24h.net';
SET SQL_SAFE_UPDATES = 1;

Отключить "Безопасный режим обновления" навсегда

Mysql workbench 8.0:

MySQL Workbench => [ Edit ] => [ Preferences ] -> [ SQL Editor ] -> Uncheck "Safe Updates"

enter image description here Старая версия может:

MySQL Workbench => [Edit] => [Preferences] => [SQL Queries]

Ответ 8

  • Preferences...
  • "Безопасные обновления"...
  • Перезапустить сервер

Настройки...

Безопасные обновления Перезапустить сервер

Ответ 9

SET SQL_SAFE_UPDATES=0;

ИЛИ

Перейти к Edit --> Preferences

Установите флажок SQL Queries и снимите флажок Safe Updates

Query --> Reconnect to Server

Теперь выполните свой SQL-запрос

Ответ 10

Если вы находитесь в безопасном режиме, вам нужно указать id в разделе where. Так что-то вроде этого должно работать!

UPDATE tablename SET columnname=1 where id>0

Ответ 11

В MySQL Workbech версии 6.2 не выходит из настроек SQLQueries.

В этом случае можно использовать: SET SQL_SAFE_UPDATES=0;

Ответ 12

В WorkBench я решил ее, отключив безопасный режим обновления:

-Edit → Настройки → Sql Editor, затем снимите флажок Безопасное обновление.

Ответ 13

SET SQL_SAFE_UPDATES = 0;

ваш код SQL здесь

SET SQL_SAFE_UPDATES = 1;

Ответ 14

Простейшим решением является определение предела строки и выполнения. Это делается в целях безопасности.

Ответ 15

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

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

create temporary table ids ( id int )
    select id from prime_table where condition = true;
update prime_table set field1 = '' where id in (select id from ids);

Failure. Изменено обновление до:

update prime_table set field 1 = '' where id <> 0 and id in (select id from ids);

Это сработало. Ну, golly - если я всегда добавляю, где ключ < > 0, чтобы обойти безопасную проверку обновлений или даже установить SQL_SAFE_UPDATE = 0, то я потерял "чек" в моем запросе. Я мог бы просто отключить опцию навсегда. Я полагаю, что он делает удаление и обновление двухэтапного процесса вместо одного.. но если вы набираете достаточно быстро и перестаете думать о том, что ключ является особенным, а скорее как неприятность..

Ответ 16

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

update tablename  set column1 = '' where tablename .id = (select id from tablename2 where tablename2.column2 = 'xyz');

Ответ 17

Это для Mac, но должно быть одинаковым для других ОС, кроме местоположения настроек.

Ошибка, возникающая при попытке выполнить небезопасную операцию DELETE

Click on preferences when you get this error

В новом окне снимите флажок " Safe updates

Uncheck the safe updates

Затем закройте и снова откройте соединение. Не нужно перезапускать службу.

Теперь мы снова попробуем DELETE с успешными результатами.

enter image description here

Так что же это за безопасные обновления? Это не зло. Об этом говорит MySql.

Использование опции --safe-updates

Для новичков полезным вариантом запуска является --safe-updates (или --i-am-a-dummy, который имеет тот же эффект). Это полезно для случаев, когда вы, возможно, выпустили инструкцию DELETE FROM tbl_name но забыли WHERE. Обычно такой оператор удаляет все строки из таблицы. С помощью --safe-updates вы можете удалять строки только путем указания значений ключей, которые их идентифицируют. Это помогает предотвратить несчастные случаи.

Когда вы используете параметр --safe-updates, mysql выдает следующую инструкцию при подключении к серверу MySQL:

SET sql_safe_updates=1, sql_select_limit=1000, sql_max_join_size=1000000;

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