Valeur décimale (entière) incorrecte: '' mySQL

dans la base de données mySQL workbench, une des tables a la latitude, la longitude et les attributs de district

lat: décimal (10,8)

lng: décimal (11,8)

quartier: int(4)

j'essaie d'importer des données .fichier csv à cette table

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')
9
demandé sur Maha 2016-01-27 15:22:56

1 réponses

Vous avez le mode strict sql activé, et vous essayez de passer une chaîne vide ( " ) comme valeur pour les champs décimaux dans l'insertion. La chaîne vide est une valeur invalide pour un champ numérique et dans mode sql strict mysql génère une erreur si vous essayez d'insérer une donnée non valide dans une colonne, plutôt que de fournir un avertissement et d'utiliser la valeur par défaut (0 pour les colonnes numériques) du type de données de la colonne en particulier:

Le mode Strict contrôle Comment MySQL gère les Invalides ou les valeurs manquantes dans déclarations de changement de données telles que insérer ou mettre à jour. Une valeur peut être invalide pour plusieurs raisons. Par exemple, il pourrait avoir de mauvaises données tapez la colonne, ou elle pourrait être hors de portée. Une valeur est manquante quand une nouvelle ligne à insérer ne contient pas de valeur pour un non-NULL colonne qui n'a pas de clause implicite explicite dans sa définition. (Pour une La colonne NULL, NULL est insérée si la valeur est manquante.) Le mode Strict affecte également les déclarations DDL telles que CREATE TABLE.

si le mode strict n'est pas en vigueur, MySQL insère des valeurs ajustées pour valeurs invalides ou manquantes et produit des avertissements (voir la Section 13.7.5.40, "SHOW WARNINGS Syntax"). En mode strict, vous pouvez produire ce comportement en utilisant INSERT IGNORE ou UPDATE IGNORE.

supprimer le mode sql strict pour la session avant de lancer l'importation:

SET SESSION sql_mode = ''
15
répondu Shadow 2016-01-27 12:40:28