MySQL-foutcode: 1175 tijdens UPDATE in MySQL Workbench

Ik probeer de kolom visitedbij te werken om deze de waarde 1 te geven. Ik gebruik MySQL-workbench en ik schrijf het statement in de SQL-editor vanuit de workbench. Ik schrijf het volgende commando:

UPDATE tablename SET columnname=1;

Ik krijg de volgende foutmelding:

Je gebruikt de veilige update-modus en je hebt geprobeerd een tabel bij te werken zonder
a WHERE dat een KEY-kolom gebruikt Om de veilige modus uit te schakelen, schakelt u de optie in
….

Ik volgde de instructies en schakelde de optie safe updateuit in het menu Edit, vervolgens Preferencesen vervolgens SQL Editor. Dezelfde fout verschijnt nog steeds & Ik kan deze waarde niet bijwerken. Vertel me alsjeblieft wat er aan de hand is?


Antwoord 1, autoriteit 100%

Het lijkt erop dat uw MySql-sessie de safe-updates optieingesteld. Dit betekent dat u geen records kunt bijwerken of verwijderen zonder een sleutel (bijv. primary key) op te geven in de waar-clausule.

Probeer:

SET SQL_SAFE_UPDATES = 0;

Of u kunt uw zoekopdracht aanpassen om de regel te volgen (gebruik primary keyin where clause).


Antwoord 2, autoriteit 27%

Volg de volgende stappen voordat u de opdracht UPDATE uitvoert:
In MySQL-werkbank

  1. Ga naar Edit–> Preferences
  2. Klik op het tabblad "SQL Editor"en uncheck“Veilige updates” check box
  3. Query–> Reconnect to Server// uitloggen en dan inloggen
  4. Voer nu uw SQL-query uit

ps, het is niet nodig om de MySQL-daemon opnieuw te starten!


Antwoord 3, autoriteit 10%

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

Antwoord 4, autoriteit 9%

SET SQL_SAFE_UPDATES = 0;
# your code SQL here
SET SQL_SAFE_UPDATES = 1;

Antwoord 5, autoriteit 7%

Het is niet nodig om SQL_SAFE_UPDATES op 0 in te stellen, ik zou het echt ontmoedigen om het op die manier te doen. SAFE_UPDATES is standaard ingeschakeld om een REDEN. Je kunt autorijden zonder veiligheidsgordels en andere dingen als je begrijpt wat ik bedoel 😉
Voeg gewoon in de WHERE-component een KEY-waarde toe die overeenkomt met alles zoals een primaire sleutel in vergelijking met 0, dus in plaats van te schrijven:

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.

Nu kunt u er zeker van zijn dat elk record (ALTIJD) wordt bijgewerkt zoals u verwacht.


Antwoord 6, autoriteit 6%

Het enige dat nodig is, is: Start een nieuwe zoekopdracht en voer het volgende uit:

SET SQL_SAFE_UPDATES = 0;

Vervolgens: voer de query uit die u probeerde uit te voeren en die voorheen niet werkte.


Antwoord 7, autoriteit 4%

Foutcode: 1175. U gebruikt de veilige update-modus en u probeerde een tabel bij te werken zonder een WHERE die een KEY-kolom gebruikt. Om de veilige modus uit te schakelen, schakelt u de optie in Voorkeuren -> SQL Editor en maak opnieuw verbinding.

Schakel “Veilige updatemodus” tijdelijk UIT

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

Zet “Veilige updatemodus” voor altijd UIT

Mysql-werkbank 8.0:

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

voer hier de afbeeldingsbeschrijving in
Oude versie kan:

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

Antwoord 8, autoriteit 2%

  1. Voorkeuren…
  2. “Veilige updates”…
  3. Server herstarten

Voorkeuren...

Veilige updates
Server opnieuw opstarten


Antwoord 9, autoriteit 2%

SET SQL_SAFE_UPDATES=0;

OF

Ga naarEdit --> Preferences

KlikSQL Queriesen deselecteerSafe Updatesselectievakje

Query --> Reconnect to Server

Voer nu uw sql-query uit


Antwoord 10, autoriteit 2%

Als u zich in de veilige modus bevindt, moet u een id opgeven in de where-clausule. Dus zoiets als dit zou moeten werken!

UPDATE tablename SET columnname=1 where id>0

Antwoord 11

Op WorkBench heb ik het opgelost door de veilige update-modus te deactiveren:

-Bewerken -> Voorkeuren -> Sql Editor en schakel Veilige update uit.


Antwoord 12

De eenvoudigste oplossing is om de rijlimiet te definiëren en uit te voeren. Dit wordt gedaan voor veiligheidsdoeleinden.


Antwoord 13

Ik heb het antwoord gevonden. Het probleem was dat ik de tabelnaam vooraf moest laten gaan door de schemanaam. d.w.z. het commando moet zijn:

UPDATE schemaname.tablename SET columnname=1;

Bedankt allemaal.


Antwoord 14

In de MySQL Workbech-versie 6.2 worden de PreferenceSQLQueries-opties niet afgesloten.

In dit geval is het mogelijk gebruik te maken van: SET SQL_SAFE_UPDATES=0;


Antwoord 15

Aangezien de vraag werd beantwoord en niets te maken had met veilige updates, is dit misschien de verkeerde plaats; Ik post alleen om informatie toe te voegen.

Ik heb geprobeerd een goede burger te zijn en heb de zoekopdracht aangepast om een tijdelijke tabel met ID’s te gebruiken die zou worden bijgewerkt:

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

Mislukt. De update gewijzigd in:

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

Dat werkte. Nou golly — als ik altijd de waar-toets <> 0 om de veilige updatecontrole te omzeilen, of zelfs SQL_SAFE_UPDATE=0 in te stellen, dan ben ik de ‘controle’ op mijn vraag kwijt. Ik kan de optie net zo goed gewoon permanent uitschakelen. Ik veronderstel dat het verwijderen en bijwerken een proces van twee stappen maakt in plaats van één.. maar als je snel genoeg typt en niet meer denkt aan de sleutel die speciaal is, maar eerder als vervelend…


Antwoord 16

Dat is waar, dit is zinloos voor de meeste voorbeelden. Maar uiteindelijk kwam ik tot de volgende verklaring en het werkt prima:

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

Antwoord 17

Ook ik kreeg hetzelfde probleem, maar toen ik ‘veilige updates’ uitschakelde in Edit ->
Voorkeuren -> SQL-editor -> Veilige updates, nog steeds gebruik ik om het hoofd te bieden aan de
fout als “Foutcode 1175 veilige modus uitschakelen”

Mijn oplossing voor deze fout is alleen de primaire sleutel van de tabel te geven als deze niet is opgegeven en de kolom bij te werken met die primaire sleutelwaarde.

Bijv: UPDATE[tabelnaam] SETEmpty_Column = ‘Waarde’ WAAR
[naam primaire sleutelkolom] = waarde;


Antwoord 18

Dit is voor Mac, maar moet hetzelfde zijn voor andere besturingssystemen, behalve de locatie van de voorkeuren.

De fout die we krijgen als we een onveilige DELETE-bewerking proberen

Klik op voorkeuren wanneer u deze foutmelding krijgt

Deselecteer in het nieuwe venster de optie Safe Updates

Deselecteer de veilige updates

Sluit vervolgens de verbinding en open deze opnieuw. U hoeft de service niet opnieuw te starten.

Nu gaan we de DELETEopnieuw proberen met succesvolle resultaten.

voer hier de afbeeldingsbeschrijving in

Dus hoe zit het met deze veilige updates? Het is geen slechte zaak. Dit zegt MySql erover.

De optie --safe-updatesgebruiken

Voor beginners is een handige opstartoptie --safe-updates(of
--i-am-a-dummy, wat hetzelfde effect heeft). Het is handig voor gevallen waarin u een instructie DELETE FROM tbl_namehebt gegeven, maar
de WHERE-clausule vergeten. Normaal gesproken verwijdert zo’n statement alles
rijen van de tafel. Met --safe-updateskunt u rijen alleen verwijderen door:
specificeren van de belangrijkste waarden die ze identificeren. Dit helpt voorkomen
ongelukken.

Wanneer u de optie --safe-updatesgebruikt, geeft mysql het volgende
statement wanneer het verbinding maakt met de MySQL-server:

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

Het is veilig om deze optie in te schakelen terwijl u werkt met de productiedatabase. Anders moet je heel voorzichtig zijn dat je niet per ongeluk belangrijke gegevens verwijdert.


Antwoord 19

typ gewoon SET SQL_SAFE_UPDATES = 0; vóór het verwijderen of bijwerken en opnieuw instellen op 1
SET SQL_SAFE_UPDATES = 1


Antwoord 20

Als u dit probleem ondervindt in een opgeslagen procedure en u de sleutel in de WHERE-component niet kunt gebruiken, kunt u dit oplossen door een variabele te declareren die de limiet van de rijen bevat die moeten worden bijgewerkt en gebruik het dan in de update/verwijder-query.

DELIMITER $
CREATE PROCEDURE myProcedure()
BEGIN
    DECLARE the_limit INT;
    SELECT COUNT(*) INTO the_limit
    FROM my_table
    WHERE my_column IS NULL;
    UPDATE my_table
    SET my_column = true
    WHERE my_column IS NULL
    LIMIT the_limit;
END$

Other episodes