sql >> Databasteknik >  >> RDS >> Mysql

upptäcka mysql-fel utan att köra det

FÖRKLARA gör susen om du kör MySQL 5.6 eller senare.

explain update whatever;

Om frågan är ok visar den exekveringsplanen. Annars returnerar det syntaxfelet.

Om du kör en mindre version av MySQL ser jag några alternativ:

  1. Det rekommenderade alternativet :Ha en testdatabas redo som återspeglar din produktionsdatabas åtminstone i struktur . Helst ha den fylld med testdata för att verifiera att frågan inte bara är syntaktisk korrekt; men att det fungerar som förväntat .
  2. Kör frågan inom ramen för en TRANSAKTION som omedelbart rullas tillbaka.
  3. Kör en version av frågan som är något modifierad för att matcha NO ROWS.

Till exempel:

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

Blir:

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

Så, om du kör 5.6 eller senare, EXPLAIN trick är snyggt. Om inte är alternativ 2 och 3 från listan också snygga (ish) knep. Men du bör generellt sett nå en utveckling server med din under utveckling frågor i alla fall.




  1. MySQL - Välja en kolumn som inte finns i Gruppera efter

  2. ComboBox.ValueMember och DisplayMember

  3. Aggregerad strängsammansättning i Oracle 10g

  4. Hitta icke-ASCII-tecken i varchar-kolumner med SQL Server