在使用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. struts2-学习笔记(一)

     Struts2学习笔记(一) 一.Struts2概述 1. 是什么? Struts2 是一个非常优秀的MVC框架,基于Model2 设计模型 Struts2是一个M(模型---域--范围模型)V ...

  2. Vue实现商城里面多个商品计算,全选,删除

    <!--包含 全选/不全选 批量删除 全部金额计算 数量加减--> 简陋的CSS代码 .main{ width: 100%;}.title{ width: 100%; height: 40 ...

  3. c# datetime与 timeStamp(unix时间戳) 互相转换

    /// <summary> /// Unix时间戳转为C#格式时间 /// </summary> /// <param name="timeStamp" ...

  4. C#钩子类 几乎捕获键盘鼠标所有事件

    using System; using System.Text; using System.Runtime.InteropServices; using System.Reflection; usin ...

  5. web项目jsp出现The superclass javax.servlet.http.HttpServlet was not found on the Java Build Path错误

    原因是Javaweb工程类中没有添加Tomcat运行时相关类导致. 解决方式如下:出错的文件---->>build path---->>config build path--- ...

  6. intellij idea 插件开发--快速定位到mybatis mapper文件中的sql

    intellij idea 提供了openApi,通过openApi我们可以自己开发插件,提高工作效率.这边直接贴个链接,可以搭个入门的demo:http://www.jianshu.com/p/24 ...

  7. Python通过future处理并发

    future初识 通过下面脚本来对future进行一个初步了解:例子1:普通通过循环的方式 import os import time import sys import requests POP20 ...

  8. 阿里巴巴Java规约插件试用

    阿里Java开发规约Eclipse插件介绍 阿里巴巴集团配合<阿里巴巴Java开发手册>PDF终极版开发的IDE插件,目前包括IDEA插件.Eclipse插件. 安装 检查环境 插件要求: ...

  9. win10 UWP 标题栏后退

    设置里,标题栏有后退按钮 在win平板,可以有后退键,手机也有 pc可以在标题栏 在OnLaunched //最后 Windows.UI.Core.SystemNavigationManager.Ge ...

  10. (转)举例讲解JAVA中的堆和栈

    转自:http://blog.csdn.net/lifuxiangcaohui/article/details/24936839 Java中堆和堆栈的区别 1. 栈(stack)与堆(heap)都是J ...