Co to w zasadzie jest
To nieprawidłowa składnia powoduje, że MySQL myśli, że próbujesz zrobić coś z kolumną lub parametrem, który ma nieprawidłowy typ „DOUBLE”.
Ucz się na moim błędzie
W moim przypadku zaktualizowałem kolumnę varchar w ustawieniu tabeli, w NULLktórym 0stała wartość . Moje zapytanie o aktualizację wyglądało tak:
UPDATE myTable SET myValue = NULL WHERE myValue = 0;
Teraz, ponieważ rzeczywisty typ myValuejest VARCHAR(255)ostrzeżeniem:
+---------+------+-----------------------------------------------+
| Level | Code | Message |
+---------+------+-----------------------------------------------+
| Warning | 1292 | Truncated incorrect DOUBLE value: 'value xyz' |
+---------+------+-----------------------------------------------+
A teraz myTablejest praktycznie pusty, ponieważ myValuejest teraz NULLdla KAŻDEGO RZĘDU w tabeli! Jak to się stało?
* wewnętrzny krzyk *
Brakuje teraz danych w ponad 30 tys. Wierszy.
* wewnętrzny krzyk nasila się *
Dzięki Bogu za kopie zapasowe. Udało mi się odzyskać wszystkie dane.
* wewnętrzna intensywność krzyków obniża się *
Poprawione zapytanie jest następujące:
UPDATE myTable SET myValue = NULL WHERE myValue = '0';
^^^
Quotation here!
Chciałbym, żeby to było coś więcej niż tylko ostrzeżenie, więc zapomnienie tych cytatów jest mniej niebezpieczne.
* Koniec z wewnętrznym krzykiem *