2016-01-27 14 views
7

W MySQL stołów, jeden z tabel ma szerokość i długość, i rejon atrybutówNieprawidłowa dziesiętny wartości (całkowity): '' mySQL

ac: standardowy (10,8)

ng: standardowy (11 8)

dzielnica: int (4)

próbuję zaimportować dane z pliku csv do tej tabeli

ERROR 1366: 1366: Incorrect decimal value: '' for column 'lat' at row 1 
SQL Statement: 
ERROR 1366: 1366: Incorrect integer value: '' for column 'district' at row 1 
SQL Statement: 
INSERT INTO `db`.`myTable` (`id`, `name_en`, `icon`, `lat`, `lng`, `district`, `city`, `postal_code`) 
    VALUES ('686', 'Name',?, '', '', '','1', 'P.O. Box 1111') 
+0

Wolę używając 'typ varchar' uniknąć' sensitive' błąd. –

Odpowiedz

12

Włączono tryb ścisłego sql i próbujesz przekazać pusty ciąg ("') jako wartość dla pól dziesiętnych we wstawce. Pusty łańcuch jest niepoprawną wartością dla pola liczbowego iw mysql strict sql mode generuje błąd, jeśli próbujesz wstawić nieprawidłowe dane do kolumny, zamiast podawać ostrzeżenie i użyć wartości domyślnej (0 dla kolumn numerycznych) danych danej kolumny typ:

Tryb ścisły kontroluje sposób, w jaki MySQL obsługuje nieprawidłowe lub brakujące wartości w instrukcjach zmiany danych , takich jak INSERT lub UPDATE. Wartość może być nieprawidłowa z kilku powodów. Na przykład może on mieć nieprawidłowy typ danych dla kolumny lub może być poza zakresem. Brak wartości , gdy nowy wiersz do wstawienia nie zawiera wartości dla kolumny NIE-NULL , która nie zawiera wyraźnej klauzuli DEFAULT w swojej definicji. (Dla kolumny NULL wstawiana jest wartość NULL, jeśli brakuje wartości). Tryb ścisły wpływa również na instrukcje DDL, takie jak CREATE TABLE.

Jeśli tryb ścisły nie działa, MySQL wstawia skorygowane wartości dla nieprawidłowe lub brakujące wartości i generuje ostrzeżenia (patrz sekcja 13.7.5.40, "SHOW WARNINGS Składnia"). W trybie ścisłym możesz wytworzyć to zachowanie, używając INSERT IGNORE lub UPDATE IGNORE.

Usuń ścisłego trybu SQL dla sesji przed rozpoczęciem importu:

SET SESSION sql_mode = '' 
+0

Dużo się udało, zadziałało! :) – Maha

+0

Warto zauważyć, że jeśli chcesz ustawić to globalnie, możesz wykonać następujące czynności: 'SET GLOBAL sql_mode = ''' – aldefouw

+1

@ emerald, to nie jest taki dobry pomysł. – Shadow