Kod błędu MySQL: 1175 podczas aktualizacji w MySQL Workbench

Próbuję zaktualizować kolumnę visited, aby nadać jej wartość 1. Używam MySQL workbench, i piszę instrukcję w edytorze SQL z wewnątrz workbench. Piszę następującą komendę:

UPDATE tablename SET columnname=1;

Daje mi następujący błąd:

Używasz trybu bezpiecznej aktualizacji i próbowałeś zaktualizować tabelę bez a gdzie używa kolumny kluczowej do wyłączenia trybu awaryjnego, przełącz opcję ....

Postępowałem zgodnie z instrukcjami i odznaczyłem safe update opcja z menu Edit Następnie Preferences następnie SQL Editor. Ten sam błąd nadal pojawia się i nie jestem w stanie zaktualizować tej wartości. Proszę, powiedz mi, co się stało?

Author: Leigh, 2012-07-12

15 answers

Wygląda na to, że Twoja sesja MySql ma ustawioną opcję safe-updates. Oznacza to, że nie można aktualizować ani usuwać rekordów bez podania klucza(np. primary key) w klauzuli where.

Spróbuj:

SET SQL_SAFE_UPDATES = 0;

Lub możesz zmodyfikować swoje zapytanie zgodnie z regułą (użyj primary key w where clause).

 1142
Author: Habibillah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-25 19:10:51

Wykonaj następujące kroki przed wykonaniem polecenia UPDATE: In MySQL Workbench

  1. idź do Edit --> Preferences
  2. Kliknij "SQL Editor" zakładkę I uncheck "bezpieczne aktualizacje" check box
  3. Query --> Reconnect to Server // Wyloguj się, a następnie zaloguj się
  4. teraz wykonaj swoje zapytanie SQL

P. s., nie trzeba restartować demona MySQL!

 351
Author: Ripon Al Wasim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-05 09:49:51
SET SQL_SAFE_UPDATES=0;
UPDATE tablename SET columnname=1;
SET SQL_SAFE_UPDATES=1;
 109
Author: user2531028,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-05 06:27:14

Wystarczy uruchomić nowe zapytanie i uruchomić:

SET SQL_SAFE_UPDATES = 0;

Następnie: uruchom zapytanie, które próbowałeś uruchomić, które wcześniej nie działało.

 94
Author: Quagmire12,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-08 06:37:46

Nie ma potrzeby ustawiania SQL_SAFE_UPDATES na 0 , naprawdę zniechęcałbym go do tego. Po prostu dodaj w klauzuli WHERE wartość klucza, która pasuje do wszystkiego jak klucz podstawowy w porównaniu z 0, więc zamiast pisać:

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.

Teraz możesz mieć pewność, że każdy rekord jest aktualizowany tak, jak oczekujesz.

 43
Author: Rudy De Volder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-04 08:23:26
  1. Preferencje...
  2. "Bezpieczne Aktualizacje"...
  3. Restart serwera

Preferencje...

Bezpieczne Aktualizacje Restart serwera

 38
Author: andrew,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-19 17:37:45
SET SQL_SAFE_UPDATES=0;

Lub

Przejdź do Edit --> Preferences

Klik SQL Queries tab i odznacz Safe Updates check box

Query --> Reconnect to Server

Teraz wykonaj swoje zapytanie sql

 33
Author: Balu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-04 11:16:38

Jeśli jesteś w trybie awaryjnym, musisz podać id w klauzuli where. Więc coś takiego powinno zadziałać!

UPDATE tablename SET columnname=1 where id>0
 23
Author: Tomislav,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-11 09:32:40

Znalazłem odpowiedź. Problem polegał na tym, że muszę poprzedzić nazwę tabeli nazwą schematu. tzn. komenda powinna brzmieć:

UPDATE schemaname.tablename SET columnname=1;
Dzięki wszystkim.
 20
Author: Jury A,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-25 05:49:02

W MySQL Workbech w wersji 6.2 nie wyłączaj opcji Preference SQLQueries.

W tym przypadku możliwe jest użycie: SET SQL_SAFE_UPDATES=0;
 13
Author: ferdiado,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-10 19:55:49

Kod Błędu: 1175. Używasz trybu bezpiecznej aktualizacji i próbowałeś zaktualizować tabelę bez gdzie, która używa kolumny kluczowej, aby wyłączyć tryb awaryjny, przełącz opcję w Preferencje - > Edytor SQL i połącz ponownie.

Wyłącz "Tryb bezpiecznej aktualizacji" tymczasowy

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

Wyłącz "Tryb bezpiecznej aktualizacji" na zawsze

Mysql workbench 8.0:

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

Tutaj wpisz opis obrazka Stara wersja może:

MySQL Workbench => [Edit] => [Preferences] => [SQL Queries]
 10
Author: TinhNQ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-31 09:35:18

Najprostszym rozwiązaniem jest zdefiniowanie limitu wierszy i wykonanie. Odbywa się to ze względów bezpieczeństwa.

 8
Author: Ruwantha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-30 08:55:34

Ponieważ pytanie zostało udzielone i nie miało nic wspólnego z bezpiecznymi aktualizacjami, to może być złe miejsce; będę pisać tylko po to, aby dodać informacje.

Starałem się być dobrym obywatelem i zmodyfikowałem zapytanie, aby użyć tymczasowej tabeli identyfikatorów, która zostanie zaktualizowana:

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

Porażka. Zmieniono aktualizację na:

update prime_table set field 1 = '' where id <> 0 and id in (select id from ids);
Zadziałało. Cóż, jeśli zawsze dodaję gdzie klucz 0, aby ominąć bezpieczne sprawdzanie aktualizacji, lub nawet ustawić sql_safe_update=0, to straciłem "sprawdzanie" na moim zapytanie. Równie dobrze mogę wyłączyć tę opcję na stałe. Przypuszczam, że to sprawia, że usuwanie i aktualizacja dwuetapowy proces zamiast jednego.. ale jeśli piszesz wystarczająco szybko i przestaniesz myśleć o tym, że klucz jest wyjątkowy, ale raczej jako uciążliwy..
 3
Author: Gerard ONeill,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-20 15:04:35

Prawda, to jest bezcelowe dla większości przykładów. Ale w końcu doszedłem do następującego stwierdzenia i działa dobrze:

update tablename  set column1 = '' where tablename .id = (select id from tablename2 where tablename2.column2 = 'xyz');
 3
Author: Sonic-Mayhem,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-10 11:20:59

To jest dla komputerów Mac, ale musi być takie samo dla innych systemów operacyjnych z wyjątkiem lokalizacji preferencji.

Błąd, który otrzymujemy, gdy spróbujemy niebezpiecznej operacji DELETE

Kliknij Preferencje, gdy pojawi się ten błąd

W nowym oknie odznacz opcję Safe updates

Odznacz bezpieczne aktualizacje

Następnie zamknij i ponownie otwórz połączenie. Nie ma potrzeby ponownego uruchamiania usługi.

Teraz spróbujemy DELETE ponownie z powodzeniem wyniki.

Tutaj wpisz opis obrazka

Więc o co chodzi z tymi bezpiecznymi aktualizacjami? To nie jest zła rzecz. Tak mówi o tym MySql.

Korzystanie z opcji --safe-updates

Dla początkujących przydatną opcją uruchamiania jest --safe-updates (lub --i-am-a-dummy, który ma ten sam efekt). Jest to pomocne w przypadkach, gdy można było wydać DELETE FROM tbl_name oświadczenie, ale zapomniałem klauzuli WHERE. Zwykle takie stwierdzenie usuwa wszystkie wiersze z tabeli. Z --safe-updates, możesz Usuń wiersze tylko przez określenie kluczowych wartości, które je identyfikują. Pomaga to zapobiegać wypadki.

Podczas korzystania z opcji --safe-updates, mysql wydaje następujące Instrukcja podczas łączenia się z serwerem MySQL:

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

bezpiecznie jest włączyć tę opcję podczas pracy z bazą danych produkcji. W przeciwnym razie należy bardzo uważać, aby nie przypadkowo usunąć ważnych danych.

 0
Author: Krishnadas PC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-05 07:22:01