在使用pt-online-schema-change会遇到如下的错误导致表修改失败:

Copying rows caused a MySQL error 1364,Message: Field 'XXX' doesn't have a default value

例子1:

#修改的SQL:
ALTER TABLE `live_comment` ADD `sourcefrom` VARCHAR(15) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '来源标志' AFTER `ip`, ADD `type` INT UNSIGNED NOT NULL DEFAULT '0' COMMENT '评论类型' AFTER `sourcefrom`, ADD INDEX (`type`)

错误信息为:

`sportslive`.`live_comment` was not altered.
Error copying rows from `sportslive`.`live_comment` to `sportslive`.`_live_comment_new`: Copying rows caused a MySQL error 1364:
Level: Warning
Code: 1364
Message: Field 'sourcefrom' doesn't have a default value

对应的表结构为:

CREATE TABLE `sportslive`.`_live_comment_new` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`live_id` int(11) NOT NULL DEFAULT '0',
`content` varchar(200) NOT NULL DEFAULT '',
`reply_uid` bigint(20) NOT NULL DEFAULT '0',
`reply_username` varchar(30) NOT NULL DEFAULT '',
`reply_content` varchar(200) NOT NULL DEFAULT '',
`reply_profile_pic` varchar(100) NOT NULL DEFAULT '',
`parent_id` int(11) NOT NULL,
`uid` bigint(20) NOT NULL DEFAULT '0',
`username` varchar(30) NOT NULL DEFAULT '',
`profile_pic` varchar(100) NOT NULL DEFAULT '',
`addtime` datetime NOT NULL,
`ip` varchar(15) NOT NULL DEFAULT '',
`prior` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'xxxx‘,
PRIMARY KEY (`id`),
KEY `live_id` (`live_id`)
) ENGINE=InnoDB AUTO_INCREMENT=296173 DEFAULT CHARSET=utf8

例子2:

修改的SQL:

ALTER TABLE `mb_post_spider_1209` CHANGE `category` `category` VARCHAR(8) NOT NULL COMMENT '', CHANGE `reposts_count` `reposts_count` INT(11) UNSIGNED NOT NULL DEFAULT '0' COMMENT '', CHANGE `heat` `heat` DECIMAL(8,5) UNSIGNED NOT NULL DEFAULT '0.00000' COMMENT '', CHANGE `spider_date` `spider_date` INT(8) UNSIGNED NOT NULL DEFAULT '0' COMMENT '抓取时间', CHANGE `main_cat` `main_cat` TINYINT(1) NOT NULL COMMENT '', CHANGE `sub_cat` `sub_cat` TINYINT(1) NOT NULL COMMENT '', CHANGE `state` `state` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0' COMMENT '', CHANGE `bid` `bid` BIGINT(20) UNSIGNED NOT NULL DEFAULT '0' COMMENT '', CHANGE `bname` `bname` VARCHAR(32) NOT NULL COMMENT ''

Warning信息如下:

Error copying rows from `mb_content`.`mb_post_spider_1209` to `mb_content`.`_mb_post_spider_1209_new`: Copying rows caused a MySQL error 1048:
Level: Warning
Code: 1048
Message: Column 'bname' cannot be null

http://www.mysqlperformanceblog.com/2012/06/21/pt-online-schema-change-and-default-values/

pt-online-schema-change和默认值关系的更多相关文章

  1. bootstrap3中select2的默认值和下拉框的禁用

    最近做项目用到了select2插件,需求中需要给下拉框设置默认值之后,禁用下拉框,我开始的写法是这样的 <script type="text/javascript"> ...

  2. 8. react 基础 - props 默认值和类型限制 与 Props , State , render 函数 关系

    一. PropTypes 与 DefaultProps 官方文档 1. PropTypes 属性校验 引入 PropTypes import PropTypes from 'prop-types'; ...

  3. Mybatis-plus 实体类继承关系 插入默认值

    在实际开发中,会定义一些公共字段,而这些公共字段,一般都是在进行操作的时候由程序自动将默认值插入.而公共的字段一般会被封装到一个基础的实体类中,同时实体类中会实现相应的getter setter 方法 ...

  4. c3p0配置之preferredTestQuery参数默认值探秘

    http://www.mchange.com/projects/c3p0/ c3p0的配置参数preferredTestQuery用于检测数据库连接测试,检测数据库是否能连接成功. Default: ...

  5. SQL语句增删改字段、表、修改默认值

    收集转载: 1.修改字段,默认值 .修改字段默认值 alter table 表名 drop constraint 约束名字 ------说明:删除表的字段的原有约束 alter table 表名 ad ...

  6. select2初始化默认值

    之前用select2初始化默认值使用了select2('val','1'),这样做没问题,但只能用在单选上,多选的话,即使将val后面的值改成数组['0', '2']这种形式也没用. <scri ...

  7. Python函数参数默认值的陷阱和原理深究"

    本文将介绍使用mutable对象作为Python函数参数默认值潜在的危害,以及其实现原理和设计目的 本博客已经迁移至: http://cenalulu.github.io/ 本篇博文已经迁移,阅读全文 ...

  8. [转]Hibernate设置时间戳的默认值和更新时间的自动更新

    原文地址:http://blog.csdn.net/sushengmiyan/article/details/50360451 Generated and default property value ...

  9. MySQL设置当前时间为默认值的方法

    方法一.是用alert table语句: 复制代码代码如下: use test_db1; create table test_ta1( id mediumint(8) unsigned not nul ...

随机推荐

  1. sqlDependency监控数据库数据变化,自动通知

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  2. (转)JVM类生命周期概述:加载时机与加载过程

    原文地址: http://blog.csdn.net/justloveyou_/article/details/72466105 JVM类加载机制主要包括两个问题:类加载的时机与步骤 和 类加载的方式 ...

  3. Java命令模式以及来自lambda的优化

    前言    设计模式是软件工程中一些问题的统一解决方案的模型,它的出现是为了解决一些普遍存在的,却不能被语言特性直接解决的问题,随着软件工程的发展,设计模式也会不断的进行更新,本文介绍的是经典设计模式 ...

  4. 关于python安装一些包时出现的错误解决方法

    1.关于wordcloud的安装 --win10,py3.6环境下安装总是出现安装错误,解决方法,下载wordcloud的wheel文件,进行安装. 详情参考:https://github.com/a ...

  5. App 监控、推广

    一.监控 酷传  http://www.kuchuan.com/ 应用雷达  http://www.ann9.com/ AppAnnie https://www.appannie.com/cn/ ap ...

  6. asp.net mvc webapi 实用的接口加密方法

    在很多项目中,因为webapi是对外开放的,这个时候,我们就要得考虑接口交换数据的安全性. 安全机制也比较多,如andriod与webapi 交换数据的时候,可以走双向证书方法,但是开发成本比较大, ...

  7. CSS之 float 属性

    特性: float的设计初衷仅仅是文字环绕效果  浮动具有破坏性,会使父容器高度塌陷  清除浮动方法: 1.脚底插入cleart:both 2.父元素BFC(IE8+)/haslayout(IE6/7 ...

  8. Emgu.CV(一)

    由于这块的知识不少,会分好几期写完 什么是OpenCV? OpenCV是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows和Mac OS操作系统上.它轻量级而且高效--由一 ...

  9. git镜像仓库

    有时候我们会把一些仓库放到本地,当他更新的时候,可以使用简单命名更新他. 不是所有时间我们都有网,所以把远程的仓库作为镜像,可以方便我们查看 普通的git clone不能下载所有分支,想要简单的git ...

  10. VIM格式化代码(How to format code with VIM)

    1) 按两下小写g,即gg,定位光标到第一行.(2) 按住Shift+v,即大写V,进入可视化编辑的列编辑模式.(3) Shift+g,即大写G,选中整个代码.(4) 按下等号=,格式化所有代码.