Код ошибки MySQL: 1175 во время обновления в MySQL Workbench
Я пытаюсь обновить столбец visited чтобы присвоить ему значение 1. Я использую MySQL workbench, и я пишу заявление в Редакторе SQL изнутри верстака. Я пишу следующую команду:
UPDATE tablename SET columnname=1;
это дает мне следующую ошибку:
вы используете безопасный режим обновления, и вы пытались обновить таблицу без
a если для отключения безопасного режима используется ключевой столбец, переключите этот параметр
....
я последовал инструкции, и я снял флажок С Preferences затем SQL Editor. Та же ошибка все еще появляется, и я не могу обновить это значение. Пожалуйста, скажи мне, что случилось?
15 ответов:
похоже, что ваш сеанс MySql имеет безопасный вариант обновления set. Это означает, что вы не можете обновить или удалить записи без указания ключа (например.
primary key) в предложении where.попробуй:
SET SQL_SAFE_UPDATES = 0;или вы можете изменить свой запрос, чтобы следовать правилу (используйте
primary keyinwhere clause).
перед выполнением команды UPDATE выполните следующие действия: В MySQL Workbench
- на
Edit-->Preferences- клик
"SQL Editor"tab иuncheck"Обновления Безопасности"check boxQuery-->Reconnect to Server// выход из системы и затем войти- теперь выполните свой SQL-запрос
p. s., нет необходимости перезапускать демон MySQL!
все что нужно это: запустить новый запрос и запустить:
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.теперь вы можете быть уверены, что каждая запись обновляется, как вы ожидаете.
SET SQL_SAFE_UPDATES=0;или
на
Edit --> Preferencesклик
SQL Queriestab и убрать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"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операцияв новом окне снимите флажок
Safe updatesзатем закройте и снова откройте соединение. Нет необходимости перезапускать службу.
теперь мы собираемся попробовать
DELETEопять же с успешными результатами.так что же это за безопасные обновления? Это не злая вещь. Вот что говорит об этом 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