mysql的sql_mode(SQL模式)调整对数据迁移的影响和处理

场景:有的时候切换数据库 或者重构迁移数据,源数据表和目标数据表数据类型不一致的时候会提示:Incorrect integer value:’ ’ for column columnname
检查源表和目标表,确实会发现字段类型发生了变化,但数据值其实并没有超出目标表字段数据类型

处理方案: 方式一,强制处理 源表的源字段的数据值;
方式二、检查 目标表的数据库的配置参数sql_mode
调整sql_mode,可以通过set @@global.sql_mode = ''
或者修正 在my.cnf修正如下配置

[mysqld]
sql_mode=''
 ps:

1、修改sql_mode ,尤其调整到宽松模式,注意更容产生异常边界数据出来。默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入

2、sql_mode 的常用参数值:

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

NO_ENGINE_SUBSTITUTION
如果需要的存储引擎被禁用或未编译,可以防止自动替换存储引擎。

具体更多参数说明:
http://www.jb51.net/article/28018.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值