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



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



UPDATE tablename SET columnname=1;


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




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




я последовал инструкции, и я снял флажок С Preferences затем SQL Editor. Та же ошибка все еще появляется, и я не могу обновить это значение. Пожалуйста, скажи мне, что случилось?

824   15  

15 ответов:

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

попробуй:

SET SQL_SAFE_UPDATES = 0;

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

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

  1. на Edit -->Preferences
  2. клик "SQL Editor" tab и uncheck "Обновления Безопасности" check box
  3. Query -->Reconnect to Server // выход из системы и затем войти
  4. теперь выполните свой SQL-запрос

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

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

все что нужно это: запустить новый запрос и запустить:

SET SQL_SAFE_UPDATES = 0;

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

нет необходимости устанавливать SQL_SAFE_UPDATES в 0, Я бы очень обескуражил его, чтобы сделать это таким образом. Просто добавьте в предложение WHERE значение ключа, которое соответствует всему, как первичный ключ по сравнению с 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.

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

  1. настройки...
  2. "Обновления Безопасности"...
  3. Перезагрузка сервера

Preferences...

Safe Updates Restart server

SET SQL_SAFE_UPDATES=0;

или

наEdit --> Preferences

кликSQL Queries tab и убратьSafe Updates флажок

Query --> Reconnect to Server

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

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

UPDATE tablename SET columnname=1 where id>0

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

UPDATE schemaname.tablename SET columnname=1;

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

в MySQL Workbech версии 6.2 не выходите из предпочтенияSQLQueriesпараметры.

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

Код Ошибки: 1175. Вы используете безопасный режим обновления, и вы попытались обновить таблицу без использования ключевого столбца, чтобы отключить безопасный режим, переключить параметр в настройках -> редактор 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]

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

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

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

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);

провал. Модифицированные обновления на:

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

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

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

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

это для 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;

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

Comments

    Ничего не найдено.