2016-01-27 25 views
7

Nel database di MySQL Workbench, uno dei tavoli ha latitudine, longitudine e attributi quartiereerrato decimale (integer) Valore: '' mySQL

lat: decimale (10,8)

lng: decimale (11 , 8)

quartiere: int (4)

sto cercando di importare dati da file cSV a questa tabella

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

Io preferisco usare 'tipo varchar' per evitare errori' sensitive'. –

risposta

12

È attiva la modalità sql rigorosa e si tenta di passare una stringa vuota ('') come valore per i campi decimali nell'inserto. La stringa vuota è un valore non valido per un campo numerico e in strict sql mode mysql genera un errore se si tenta di inserire dati non validi in una colonna, anziché fornire un avviso e utilizzare il valore predefinito (0 per le colonne numeriche) dei dati della particolare colonna tipo:

modalità Strict controlla come MySQL gestisce i valori non validi o mancanti in dichiarazioni le variazioni dei dati come ad esempio INSERT o UPDATE. Un valore può essere non valido per diversi motivi. Ad esempio, potrebbe avere il tipo di dati errato per la colonna oppure potrebbe essere fuori intervallo. Manca un valore quando una nuova riga da inserire non contiene un valore per una colonna non NULL che non ha una clausola DEFAULT esplicita nella sua definizione. (Per una colonna NULL , NULL viene inserito se il valore è mancante.) La modalità rigorosa influisce anche sulle istruzioni DDL come CREATE TABLE.

Se la modalità rigorosa non è a tutti gli effetti, MySQL inserisce valori regolati per valori non validi o mancanti e produce avvertimenti (si veda la Sezione 13.7.5.40, “MOSTRA AVVERTENZE sintassi”). In modalità rigorosa, è possibile produrre questo comportamento utilizzando INSERIMENTO IGNORA o AGGIORNAMENTO IGNORA.

Rimuovere la modalità di SQL rigorosa per la sessione prima di avviare l'importazione:

SET SESSION sql_mode = '' 
+0

Grazie mille, ha funzionato! :) – Maha

+0

Vale la pena notare che se si desidera impostarlo globalmente, è possibile effettuare le seguenti operazioni: 'SET GLOBAL sql_mode = ''' – aldefouw

+1

@aldefouw non è una buona idea. – Shadow