Update query mislukt met fout: 1175

Ik probeer een tabel bij te werken met de volgende query

update at_product A join
(
SELECT atbillfields.billeditemguid,count(*) AS numberOfPeopleBought
    ,sum(atbillfields.billeditemqty) AS soldquantity
FROM jtbillingtest.at_salesbill atsalesbill 
JOIN jtbillingtest.at_billfields atbillfields
    ON atsalesbill.billbatchguid=atbillfields.billbatchguid
WHERE atsalesbill.billcreationdate BETWEEN '2013-09-09' AND date_add('2013-09-09', INTERVAL 1 DAY)
GROUP BY atbillfields.billeditemguid) B ON B.billeditemguid = A.productguid
SET A.productQuantity = A.productQuantity - B.soldquantity

Maar krijg de volgende uitzondering:

Foutcode: 1175. U gebruikt de veilige update-modus en u heeft geprobeerd om:
update een tabel zonder een WHERE die een KEY-kolom gebruikt Om veilig uit te schakelen
modus, schakel de optie in Voorkeuren -> SQL-query’s en opnieuw verbinding maken.

Toen ik een where-clausule opgaf met de update, zoals A.productQuantity = 1, werd dat specifiek bijgewerkt.

Kan iemand mij uitleggen waarom ik de query niet kan uitvoeren en hoe ik het probleem kan oplossen?


Antwoord 1, autoriteit 100%

Bekijk:

http://justalittlebrain.wordpress.com/2010/09/15/you-are-using-safe-update-mode-and-you- geprobeerd-een-tabel-bij te werken-zonder-een-waar-die-een-sleutel-kolom gebruikt/

Als je wilt updaten zonder een waar-sleutel, moet je

. uitvoeren

SET SQL_SAFE_UPDATES=0;

vlak voor je vraag.

Een andere optie is om uw zoekopdracht te herschrijven en een sleutel op te nemen.


Antwoord 2, autoriteit 19%

Deze fout betekent dat u in de veilige update-modus werkt en dat u daarom twee opties heeft:

  • u moet een waar-clausule opgeven die een index bevat om de update te laten slagen of
  • Je kunt deze functie uitschakelen door SET SQL_SAFE_UPDATES = 0;
  • te doen


Antwoord 3, autoriteit 12%

U kunt MysqlWorkbench uitproberen

Ga naar Bewerken –> Voorkeuren

Klik op het tabblad “SQL Editor” en schakel het selectievakje “Veilige updates” uit

Vraag –> Maak opnieuw verbinding met de server (uitloggen en vervolgens inloggen)

Ik hoop dat het nuttig voor je is.


Antwoord 4, autoriteit 9%

In MySQL 5.5, als u MySQL Workbenchgebruikt, dan

  • Ga naar Edit–> Preferences
  • Klik op het tabblad "SQL Queries"en schakel het selectievakje "Safe Updates"uit.
  • Query–>Maak opnieuw verbinding met de server (logouten dan login)

Dit werkt.


Antwoord 5

In mijn geval schakel ik het controleren van de externe-sleutel uit met dit Mysql-commando:

SET FOREIGN_KEY_CHECKS=0;

Other episodes