Próbuję zaktualizować kolumnę, visited
aby nadała jej wartość 1. Korzystam ze środowiska roboczego MySQL i piszę instrukcję w edytorze SQL z poziomu środowiska roboczego. Piszę następujące polecenie:
UPDATE tablename SET columnname=1;
Daje mi następujący błąd:
Używasz trybu bezpiecznej aktualizacji i próbowałeś zaktualizować tabelę bez GDZIE, który używa kolumny KLUCZ Aby wyłączyć tryb awaryjny, przełącz opcję ....
I przestrzegać instrukcji, a ja niezaznaczone na safe update
opcję z Edit
menu, a następnie Preferences
potem SQL Editor
. Nadal pojawia się ten sam błąd i nie mogę zaktualizować tej wartości. Powiedz mi, co jest nie tak?
mysql
sql-update
mysql-workbench
Jury A.
źródło
źródło
Odpowiedzi:
Wygląda na to, że twoja sesja MySql ma ustawioną opcję bezpiecznych aktualizacji . Oznacza to, że nie można aktualizować ani usuwać rekordów bez podania klucza (np.
primary key
) W klauzuli where.Próbować:
Lub możesz zmodyfikować zapytanie, aby postępować zgodnie z regułą (użyj
primary key
wwhere clause
).źródło
SET SQL_SAFE_UPDATES = 1
to po zakończeniu, ponieważ jest to cenna funkcja bezpieczeństwa.Przed wykonaniem polecenia UPDATE wykonaj następujące kroki: W MySQL Workbench
Edit
->Preferences
"SQL Editor"
kartę iuncheck
„Bezpieczne aktualizacje”check box
Query
->Reconnect to Server
// wyloguj się, a następnie zalogujps, nie ma potrzeby restartowania demona MySQL!
źródło
"Sql Editor"
zamiast,"Sql Queries"
a następnie u dołu znajduje się pole wyboru"Safe Updates"
źródło
Nie ma potrzeby ustawiania SQL_SAFE_UPDATES na 0 , naprawdę odradzałbym to, aby zrobić to w ten sposób. SAFE_UPDATES jest domyślnie włączone dla POWODU. Możesz prowadzić samochód bez pasów bezpieczeństwa i innych rzeczy, jeśli wiesz, co mam na myśli;) Po prostu dodaj w klauzuli WHERE wartość KLUCZ, która pasuje do wszystkiego jak klucz podstawowy w porównaniu do 0, więc zamiast pisać:
Teraz możesz mieć pewność, że każdy rekord jest (ZAWSZE) aktualizowany zgodnie z oczekiwaniami.
źródło
WHERE id > 0
jako podstęp w tej linii.Wszystko, czego potrzeba to: Rozpocznij nowe zapytanie i uruchom:
Następnie: Uruchom zapytanie, które próbujesz uruchomić, które wcześniej nie działało.
źródło
ZESTAW SQL_SAFE_UPDATES = 0;
Twój kod SQL tutaj
ZESTAW SQL_SAFE_UPDATES = 1;
źródło
Kod błędu: 1175. Używasz trybu bezpiecznej aktualizacji i próbowałeś zaktualizować tabelę bez GDZIE, który używa kolumny KLUCZ. Aby wyłączyć tryb awaryjny, przełącz opcję w Preferencjach -> Edytor SQL i połącz ponownie.
Wyłącz tymczasowo „Tryb bezpiecznej aktualizacji”
Na zawsze wyłącz „Tryb bezpiecznej aktualizacji”
Mysql workbench 8.0:
Stara wersja może:
źródło
źródło
LUB
Iść do
Edit --> Preferences
Kliknij
SQL Queries
kartę i odznaczSafe Updates
pole wyboruQuery --> Reconnect to Server
Teraz uruchom zapytanie SQL
źródło
Jeśli jesteś w trybie awaryjnym, musisz podać id w klauzuli where. Więc coś takiego powinno działać!
źródło
W WorkBench rozwiązałem ten problem, dezaktywując tryb bezpiecznej aktualizacji:
-Edytuj -> Preferencje -> Edytor SQL, a następnie odznacz Bezpieczna aktualizacja.
źródło
Znalazłem odpowiedź Problem polegał na tym, że muszę poprzedzić nazwę tabeli nazwą schematu. tzn. polecenie powinno brzmieć:
Dziękuje wszystkim.
źródło
qms-active-db
.gh_table set bookmark = '1660_207100000001000'W MySQL Workbech wersja 6.2 nie wychodzi z
W takim przypadku możliwe jest użycie:SQLQueries
opcji Preferencji .SET SQL_SAFE_UPDATES=0;
źródło
Najprostszym rozwiązaniem jest zdefiniowanie limitu wiersza i wykonanie. Odbywa się to ze względów bezpieczeństwa.
źródło
Ponieważ na pytanie udzielono odpowiedzi i nie miało ono nic wspólnego z bezpiecznymi aktualizacjami, może to być złe miejsce; Zamierzam tylko dodać informacje.
Próbowałem być dobrym obywatelem i zmodyfikowałem zapytanie, aby użyć tabeli tymczasowej identyfikatorów, które zostaną zaktualizowane:
Niepowodzenie. Zmodyfikowano aktualizację do:
To się udało. Cóż, golly - jeśli zawsze dodaję, gdzie klucz <> 0, aby obejść kontrolę bezpiecznej aktualizacji, lub nawet ustawiłem SQL_SAFE_UPDATE = 0, to straciłem „sprawdzenie” w moim zapytaniu. Równie dobrze mogę po prostu wyłączyć tę opcję na stałe. Przypuszczam, że powoduje to usunięcie i zaktualizowanie dwuetapowego procesu zamiast jednego ... ale jeśli wpiszesz wystarczająco szybko i przestaniesz myśleć o tym, że klucz jest wyjątkowy, ale raczej po prostu uciążliwy ...
źródło
To prawda, że w większości przypadków nie ma to sensu. Ale w końcu doszedłem do następującego oświadczenia i działa dobrze:
źródło
Dotyczy to komputerów Mac, ale musi być taki sam w przypadku innych systemów operacyjnych, z wyjątkiem lokalizacji preferencji.
Błąd, który pojawia się, gdy próbujemy wykonać niebezpieczną
DELETE
operacjęW nowym oknie odznacz opcję
Safe updates
Następnie zamknij i ponownie otwórz połączenie. Nie ma potrzeby ponownego uruchamiania usługi.
Teraz spróbujemy
DELETE
ponownie z udanymi wynikami.Więc o co chodzi z tymi bezpiecznymi aktualizacjami? To nie jest zła rzecz. Tak mówi o tym MySql.
Korzystanie z
--safe-updates
opcjiWłączenie tej opcji jest bezpieczne podczas pracy z produkcyjną bazą danych. W przeciwnym razie musisz bardzo uważać, aby przypadkowo nie usunąć ważnych danych.
źródło