首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不正确的小数(整数)值:‘’mySQL

不正确的小数(整数)值:‘’mySQL
EN

Stack Overflow用户
提问于 2016-01-27 20:22:57
回答 3查看 47.1K关注 0票数 20

在mySQL workbench数据库中,其中一个表具有纬度、经度和地区属性

lat:十进制(10,8)

lng:十进制(11,8)

地区: int(4)

我正在尝试将数据从.csv文件导入到此表

代码语言:javascript
复制
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')
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-01-27 20:40:28

您启用了strict sql模式,并尝试将一个空字符串('')作为insert中的十进制字段的值传递。空字符串是数值字段的无效值,如果您尝试将无效数据插入到列中,而不是提供警告并使用特定列的数据类型的默认值(0表示数值列),则strict sql mode中的mysql会生成错误:

严格模式控制MySQL如何处理INSERT或UPDATE等数据更改语句中的无效值或缺失值。由于多种原因,值可能是无效的。例如,它可能具有错误的列数据类型,或者它可能超出范围。如果要插入的新行不包含在其定义中没有显式DEFAULT子句的非空列的值,则缺少值。(对于NULL列,如果缺少值,则插入NULL。)严格模式还会影响CREATE TABLE等DDL语句。

如果严格模式不起作用,MySQL会为无效或缺少的值插入调整后的值,并生成警告(参见13.7.5.40节,“显示警告语法”)。在严格模式下,可以使用INSERT IGNORE或UPDATE IGNORE产生此行为。

在开始导入之前,删除会话的严格sql模式:

代码语言:javascript
复制
SET SESSION sql_mode = ''
票数 32
EN

Stack Overflow用户

发布于 2019-11-01 00:18:04

global sql_mode中删除STRICT_TRANS_TABLE。如果已经设置,您可能需要全局sql_mode中的其他属性,如NO_ZERO_DATE。

根据您的服务器版本,在my.cnf (或/etc/mysql/mysql.conf.d/mysqld.cnf)中的mysqld下设置它。

代码语言:javascript
复制
[mysqld]  
sql_mode = "NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
票数 0
EN

Stack Overflow用户

发布于 2021-10-24 21:53:38

我所做的就是将我的查询从INSERT INTO...更改为INSERT IGNORE INTO...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35037288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档