用的是OceanBase数据库企业版 3.2.2,因为数据量很大,所以用了分区表
以下是建表语句:
CREATE TABLE sto_kucun_move_detail_title
(id
bigint(20) NOT NULL AUTO_INCREMENT,mtanr_vouch_no
varchar(60) NOT NULL COMMENT '商品凭证编号',order_date
datetime NOT NULL COMMENT '单据日期(业务日期,凭证日期)',posting_date
datetime DEFAULT NULL COMMENT '过账日期',create_time
datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建日期',cankao_vouch_text
varchar(60) DEFAULT NULL COMMENT '参考凭证文本',vouch_title_text
varchar(60) DEFAULT NULL COMMENT '凭证抬头文本',note_order_no
varchar(300) DEFAULT NULL COMMENT '备注单号',vouch_type
varchar(2) DEFAULT NULL COMMENT 'C1出库 R1入库 A1移库',td_order
varchar(20) DEFAULT NULL COMMENT '天端参考单号',order_type
varchar(10) DEFAULT NULL COMMENT '单据类型',order_type_name
varchar(50) DEFAULT NULL COMMENT '天端订单类型描述',sapcankao_order
varchar(20) DEFAULT NULL COMMENT 'sap参考编号',congxiao_vouch_no
varchar(30) DEFAULT NULL COMMENT '冲销凭证的凭证号',imei_update_result
int(1) NOT NULL DEFAULT '0' COMMENT '串码更新结果 1完成',imei_update_flag
int(1) NOT NULL DEFAULT '0' COMMENT '串码更新标识 0否,1是',update_time
datetime DEFAULT NULL COMMENT '更新时间',create_user
varchar(30) DEFAULT NULL COMMENT '创建者用户名',create_name
varchar(50) DEFAULT NULL COMMENT '创建者姓名',congxiao_flag
varchar(1) DEFAULT NULL COMMENT '冲销标识:1冲销2被冲销',business_type
varchar(5) DEFAULT NULL COMMENT '业务类型',version
int(10) DEFAULT NULL,churuku_status
int(1) DEFAULT NULL COMMENT '出入库标识 1出库 2入库',manual_status
varchar(2) DEFAULT '0' COMMENT '是否手工更新(0为否,1为是)',
PRIMARY KEY ( id
, create_time
),
UNIQUE KEY sto_goods_vouch
( mtanr_vouch_no
) GLOBAL,
UNIQUE KEY id
( id
) GLOBAL,
KEY order_date
( order_date
) GLOBAL,
KEY order_type
( order_type
) GLOBAL,
KEY sapcankao_order
( sapcankao_order
) GLOBAL,
KEY td_order
( td_order
) GLOBAL
) DEFAULT CHARSET = utf8mb4 COMMENT = '物料凭证抬头表'
partition by list(year(create_time))
(partition p2020 values in (2020),
partition p2021 values in (2021),
partition p2022 values in (2022),
partition p2023 values in (2023),
partition p2024 values in (2024),
partition p2025 values in (2025));
因为要根据字段 create_time 做分区,所以create_time字段必须包含在主键中,所以主键是两个字段 :id 和 create_time。
OceanBase的分区表是这样要求的,分区键必须包含在主键中。
我用的seata版本是 1.7.0
6条答案
按热度按时间qxgroojn1#
OceanBase的mode是什么?mysql还是oracle?
What is the mode of OceanBase? MySQL or Oracle?
ckx4rj1h2#
OceanBase的mode是什么?mysql还是oracle? What is the mode of OceanBase? MySQL or Oracle?
标题写的是mysql
sirbozc53#
OceanBase的mode是什么?mysql还是oracle? What is the mode of OceanBase? MySQL or Oracle?
标题写的是mysql
mysql已经支持多主键了,就提交的信息无法判断问题是什么引起的
MySQL already supports multiple primary keys, so the commit information cannot determine what caused the problem.
erhoui1w4#
这个表就是多主键,关键是 seata不支持多主键回滚。
jw5wzhpr5#
OceanBase的mode是什么?mysql还是oracle? What is the mode of OceanBase? MySQL or Oracle?
标题写的是mysql
mysql已经支持多主键了,就提交的信息无法判断问题是什么引起的 MySQL already supports multiple primary keys, so the commit information cannot determine what caused the problem.
从哪个版本开始支持的?
csga3l586#
把异常信息拿出来,我怀疑是sql中的大小写问题,跟数据表不一致导致的,2.1上会修复