如题.
有一张表u_user,表本来有几千万数据。
现在针对表添加分区:
altertableu_user
PARTITIONBYhash(id)
PARTITIONS5;
出现错误提示:
[SQL]altertableu_user
PARTITIONBYhash(id)
PARTITIONS5;
[Err]1503-AUNIQUEINDEXmustincludeallcolumnsinthetable'spartitioningfunction。
id为表的主键。下面为表的建表语句。
CREATETABLE`NewTable`(
`id`bigint(20)NOTNULLAUTO_INCREMENTCOMMENT'主键',
`source`int(11)NOTNULLCOMMENT'订单来源,0表示ecm,以后可能有其它的系统,例如直销o2o。订单相关的键值,例如orderId,必须和source合起来才唯一',
`order_item_id`bigint(20)NOTNULLCOMMENT'对应ecm的orderItemId,orderItemId+source唯一',
`order_id`bigint(20)NOTNULLCOMMENT'对应ecm的orderId,非唯一',
`platform_id`int(11)NULLDEFAULTNULLCOMMENT'平台编码',
`receiver_name`varchar(64)CHARACTERSETutf8COLLATEutf8_general_ciNULLDEFAULTNULLCOMMENT'收货人姓名',
`receiver_mobile`varchar(64)CHARACTERSETutf8COLLATEutf8_general_ciNULLDEFAULTNULLCOMMENT'收货人手机号,根据receiverMobile+brand,可得到uid',
`receiver_user_id`bigint(20)NULLDEFAULTNULLCOMMENT'收货人userId。如果没有品牌,则该值为null',
`brand`int(11)NULLDEFAULTNULLCOMMENT'商品的品牌,品牌根据itemId得出,一般情况下都不为null',
`item_id`varchar(32)CHARACTERSETutf8COLLATEutf8_general_ciNOTNULLCOMMENT'商品编码',
`item_name`varchar(256)CHARACTERSETutf8COLLATEutf8_general_ciNOTNULLCOMMENT'商品名称',
`product_model`varchar(64)CHARACTERSETutf8COLLATEutf8_general_ciNULLDEFAULTNULLCOMMENT'产品型号',
`product_type_id`varchar(64)CHARACTERSETutf8COLLATEutf8_general_ciNULLDEFAULTNULLCOMMENT'产品类型id',
`product_type`varchar(64)CHARACTERSETutf8COLLATEutf8_general_ciNULLDEFAULTNULLCOMMENT'产品类型。例如波轮,滚筒',
`crm_entcode`varchar(64)CHARACTERSETutf8COLLATEutf8_general_ciNULLDEFAULTNULLCOMMENT'事业部编码。当前有编码,但无对应的名称',
`item_cnt`int(11)NOTNULLCOMMENT'数量',
`item_price`decimal(13,2)NOTNULLCOMMENT'单价',
`item_amount`decimal(13,2)NOTNULLCOMMENT'金额item_amount=item_cnt*item_price',
`delivery_fee`decimal(13,2)NOTNULLCOMMENT'运费',
`discount_amount`decimal(13,2)NOTNULLCOMMENT'优惠金额',
`adjust_amount`decimal(13,2)NOTNULLCOMMENT'调整金额',
`payment_amount`decimal(13,2)NOTNULLCOMMENT'应付金额payment_amount=item_amount+delivery_fee-discount_amount+adjust_amount',
`refund_cnt`int(11)NOTNULLCOMMENT'退货数量,需要根据退货单计算得出',
`actual_cnt`int(11)NOTNULLCOMMENT'实际剩余的数量,即actualCnt=itemCnt-refundCnt;剩余数量为0的不会出现在我的产品',
`refund_amount`decimal(13,2)NOTNULLCOMMENT'退货金额',
`actual_pay_amount`decimal(13,2)NOTNULLCOMMENT'实际支付金额actualPayAmount=paymentAmount-refundAmount',
`status`int(11)NULLDEFAULTNULLCOMMENT'复制过来的status。这个字段只是保留,不用于状态计算。订单只关心是否cancel',
`cancel`bit(1)NOTNULLCOMMENT'true表示已取消。这个值根据status得出。ccrm只关心订单是否取消',
`exchange`bit(1)NOTNULLCOMMENT'true表示是换货单,NOTE换货单会出现在我的订单,但不会出现在我的产品,不计算退货数量和金额(因为最终没变),也不参与客单价计算。NOTE问题:如果换货后的收货人和原收货人不是同一个人,则新的收货人看不到该产品',
`invoice_code`varchar(64)CHARACTERSETutf8COLLATEutf8_general_ciNULLDEFAULTNULLCOMMENT'发票号',
`logistics_com_code`varchar(64)CHARACTERSETutf8COLLATEutf8_general_ciNULLDEFAULTNULLCOMMENT'物流公司编码',
`logistics_no`varchar(2200)CHARACTERSETutf8COLLATEutf8_general_ciNULLDEFAULTNULLCOMMENT'物流单号',
`user_hide_time`datetimeNULLDEFAULTNULLCOMMENT'用户隐藏时间,为null表示不隐藏,否则隐藏,即用户认为不是自己的数据',
`order_create_time`datetimeNULLDEFAULTNULLCOMMENT'对应outerCreateTime,用户在第3方平台下单的时间,即购买时间',
`cancel_time`datetimeNULLDEFAULTNULLCOMMENT'取消时间',
`data_update_time`datetimeNOTNULLCOMMENT'数据更新时间',
`create_time`datetimeNOTNULLDEFAULTCURRENT_TIMESTAMP,
`update_time`datetimeNOTNULLDEFAULTCURRENT_TIMESTAMP,
PRIMARYKEY(`id`),
UNIQUEINDEX`order_item_id_source`(`order_item_id`,`source`)USINGBTREE,
INDEX`order_id`(`order_id`)USINGBTREE,
INDEX`receiver_user_id`(`receiver_user_id`)USINGBTREE,
INDEX`receiver_mobile_brand`(`receiver_mobile`,`brand`)USINGBTREE
)
ENGINE=InnoDB
DEFAULTCHARACTERSET=utf8COLLATE=utf8_general_ci
COMMENT='订单明细表'
AUTO_INCREMENT=26621196
ROW_FORMAT=COMPACT
;
分 -->
|