`
sheungxin
  • 浏览: 105509 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Mysql数据导入失败(sql_mode)

sql 
阅读更多
准备在本地搭建测试库环境,把远程测试库结构及数据导出。在本地建库还原过程中一直失败,之前一直这么干的,所以很纳闷。报错信息中提示invalid value for timestamp,时间字段的默认值被设置为“0000-00-00 00:00:00”。通过度娘定位可能是sql_mode问题,通过“select @@sql_mode”命令查询本:
sql_mode(本地库)
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

sql_mode(远程库)
STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION

对比发现本地库sql_mode中有“NO_ZERO_IN_DATE,NO_ZERO_DAT”,时间中含有0不合法

mysql5.0以上版本支持三种sql_mode模式:ANSI、TRADITIONAL和STRICT_TRANS_TABLES。
ANSI模式:宽松模式,对插入数据进行校验,如果不符合定义类型或长度,对数据类型调整或截断保存,报warning警告。
TRADITIONAL模式:严格模式,当向mysql数据库插入数据时,进行数据的严格校验,保证错误数据不能插入,报error错误。用于事物时,会进行事物的回滚。
STRICT_TRANS_TABLES模式:严格模式,进行数据的严格校验,错误数据不能插入,报error错误。

sql_mode常用值如下:
ONLY_FULL_GROUP_BY:
对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中

NO_AUTO_VALUE_ON_ZERO:
该值影响自增长列的插入。默认设置下,插入0或NULL代表生成下一个自增长值。如果用户 希望插入的值为0,而该列又是自增长的,那么这个选项就有用了。

STRICT_TRANS_TABLES:
在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制
NO_ZERO_IN_DATE:
在严格模式下,不允许日期和月份为零

NO_ZERO_DATE:
设置该值,mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告。

ERROR_FOR_DIVISION_BY_ZERO:
在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。如 果未给出该模式,那么数据被零除时MySQL返回NULL

NO_AUTO_CREATE_USER:
禁止GRANT创建密码为空的用户

NO_ENGINE_SUBSTITUTION:
如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常

PIPES_AS_CONCAT:
将"||"视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似

ANSI_QUOTES:
启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符

如果使用mysql,为了继续保留大家使用oracle的习惯,可以对mysql的sql_mode设置如下:
在my.cnf添加如下配置
[mysqld]
sql_mode='ONLY_FULL_GROUP_BY,NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,PIPES_AS_CONCAT,ANSI_QUOTES


参考:http://blog.csdn.net/wyzxg/article/details/8787878
0
0
分享到:
评论

相关推荐

    MySQL里load data遇到的问题及解决方法

    MySQL 是一个关系数据库管理系统,load data 是 MySQL 中的一种数据导入方法,它可以将文本文件中的数据导入到 MySQL 数据库中。但是,在使用 load data 时,可能会遇到一些问题,本文将讨论这些问题和解决方法。 ...

    仓库商品管理系统数据库导入文件-仓库商品管理系统数据库导入文件

    /* SQLyog Ultimate v8.32 MySQL - 5.0.96-community-nt : ...40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; CREATE DAT

    mysql导入数据库ERROR 1231 (42000)错误.docx

    MySQL数据库在进行数据导入或迁移时,可能会遇到`ERROR 1231 (42000)`这类错误,这通常与服务器接受的数据包大小限制有关。错误信息显示某些变量不能被设置为'NULL'的值,比如`time_zone`, `sql_mode`, `foreign_key...

    spark读取hbase数据,并使用spark sql保存到mysql

    本示例将详细介绍如何使用 Spark 从 HBase 中读取数据,并通过 Spark SQL 将其存储到 MySQL 数据库中。 首先,让我们了解 Spark 与 HBase 的交互。Spark 提供了 `spark-hbase-connector` 库,允许我们方便地连接到 ...

    修改php.ini实现Mysql导入数据库文件最大限制的修改方法

    里介绍修改php.ini实现Mysql导入数据库文件最大限制的修改方法,简单说明了wampserver服务器上针对php.ini配置文件上传限制参数、内存限制参数以及post传输参数等修改方法,需要的朋友可以参考一下

    delphi导入excel至sql

    本教程将详细介绍如何使用Delphi编程环境将Excel数据导入到SQL数据库,特别是在繁体中文环境下操作的方法。Delphi是一款强大的RAD(快速应用开发)工具,它提供了丰富的组件和API,使得与各种数据库进行交互变得简单...

    中国省市区三级数据库表

    40101 SET @OLD_SQL_MODE=@@SQL_MODE */` 和 `SET SQL_MODE=''` 是SQL提示符,用于在不同版本的MySQL中保持兼容性,这里清空了当前的SQL模式。 - `/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES */` 和 `SET SQL_NOTES=...

    MySQL数据表合并去重的简单实现方法

    在MySQL数据库管理中,数据去重是一个常见的需求,特别是在数据导入、数据整合或者处理爬虫抓取的数据时。本文将详细介绍如何在MySQL中合并数据表并去除重复项,以提高数据质量。 首先,我们创建两个具有相同结构的...

    快速进行Access数据库转成mysql数据库及mysql导入中文数据乱码问题的解决方案.pdf

    ### 快速进行Access数据库转成MySQL数据库及MySQL导入中文数据乱码问题的解决方案 #### 一、使用Access-to-mysql Pro进行数据库转换 **Access-to-mysql Pro**是一款能够直接将Access文件导入到MySQL中的专业工具。...

    embulk之sqlserver to mysql

    ### 使用Embulk实现SQL Server至MySQL的数据迁移 #### 一、背景介绍 随着业务发展和技术迭代,企业常常需要在不同的数据库之间进行数据迁移。本文主要介绍如何使用Embulk这一工具来实现从SQL Server到MySQL的数据...

    MYSQL数据查询技巧.pdf

    当新启用的MySQL服务器在导入包含中文数据的Excel或CSV文件时,数据变为空白。原因在于新的MySQL服务器默认的字符集不支持中文,通常表现为character_set_database和character_set_server设置为"latin1",而不能正确...

    matlab导入excel代码-utl_calculate_mode_for_each_row:关键词:sassqljoin合并大数据分析宏o

    matlab导入excel代码utl_calculate_mode_for_each_row 关键词:sas sql join合并大数据分析宏oracle teradata mysql sas社区stackoverflow statistics人工智慧AI Python R Java Javascript WPS Matlab SPSS Scala ...

    mysql5.x升级到mysql5.7后导入之前数据库date出错的快速解决方法

    在进行上述操作时,需要注意的是,虽然通过修改`sql_mode`可以快速解决数据导入问题,但该选项的改动可能会影响到数据库的其他操作和约束,因此建议在进行调整前备份好相关配置文件和数据库,以防万一出现不预期的...

    MySQL高效导入多个.sql文件方法详解

    总之,MySQL的`mysql`和`source`命令在导入多个.sql文件时各有适用场景,合理运用上述优化策略能有效提升数据导入效率,尤其对于处理大量数据的情况。在实际操作中,应结合具体情况选择合适的方法,并进行性能测试以...

Global site tag (gtag.js) - Google Analytics