一 序
公司的sql工单,引入了自动审核工具。毕竟人肉审核太苦了,想想也可知道,靠dba的火眼金睛忙不过来,一出差就是大问题。这里工具是Inception。好了背景结束了。
二
要备份线上历史表的数据,所以基本上就是考show create table 来看看原来怎么建的,copy出来,改改表名加日期就是备份表了。
CREATE TABLE `XXX` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
提示报错语句如下:
Set unsigned attribute on auto increment column in table XXX
整数主键有可选的属性“UNSIGNED”(无符号),看下书上的介绍。
类型 | 声明符号 | 取值范围 |
---|---|---|
有符号整数 | SIGNED | -2147483648 ~ 2147483647 |
无符号整数 | UNSIGNED | 0 ~ 4294967295 |
所以,简单的修改就是建表SQL加上unsigned,主键都是正数。
CREATE TABLE `XXX` (
`id` int UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键' ,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB AUTO_INCREMENT = 100 DEFAULT CHARACTER SET=utf8 COMMENT='XXX表';
***********************
因为mysam的不常用了,innodb类型的update auto_increment字段,如果列值与已有的值重复,则会出错;
所以关于id不建议采用了auto_increment。尽量外部生成后设值,简单不出错。