sql >> Database teknologi >  >> RDS >> Mysql

opdage mysql-fejl uden at udføre det

FORKLÆR gør tricket, hvis du kører MySQL 5.6 eller nyere.

explain update whatever;

Hvis forespørgslen er ok, viser den udførelsesplanen. Ellers returnerer den syntaksfejlen.

Hvis du kører en mindre version af MySQL, ser jeg et par muligheder:

  1. Den anbefalede mulighed :Hav en testdatabase klar, der afspejler din produktionsdatabase i det mindste i struktur . Ideelt set skal det udfyldes med testdata for at bekræfte, at forespørgslen ikke kun er syntaktisk korrekt; men at det fungerer som forventet .
  2. Kør forespørgslen inden for rammerne af en TRANSAKTION der straks rulles tilbage.
  3. Kør en version af forespørgslen, der er lidt ændret, så den matcher NO ROWS.

For eksempel:

update table set col1 = @val1 where col2 = @val2;

Bliver:

update table set col1 = @val1 where (col2 = @val2) and 1=0;

Så hvis du kører 5.6 eller nyere, er EXPLAIN trick er pænt. Hvis ikke, er muligheder 2 og 3 fra listen også pæne tricks. Men du bør generelt ramme en udvikling server med din i-udvikling forespørgsler alligevel.




  1. Sådan viser du min og maks værdi på dynamisk pivottabel

  2. Oracle Unicode-spooling

  3. Reverse Engineering en datamodel ved hjælp af Oracle SQL Developer

  4. Kan ikke hente data fra database til script-tag, mens grafen bruges