Seata 1.3.0 Oracle 回滚测试验证 报错 ORA-02289: 序列不存在
使用Seata 1.3.0版本,测试A服务调用B服务,且A方法中,手动写了一个异常,测试是否正常回滚(Mysql已经测试过)
发现报错:ORA-02289: 序列不存在
一看就是undo_log这张表的sequence没有建立,导致数据保存不了,
太久没有用oracle了,之前搜索undo_log的建表SQL是直接在网上搜索的,所以缺少了建sequence的部分
在代码里(\incubator-seata-1.3.0\script\client\at\db目录)下,找到了oracle.sql,删除了旧表,跑一下sql就OK了
【其实是想用2.1.0的,因为支持了sqlserver,但是因为这个版本还是预发布版,以及涉及到的其它组件的版本,以及jdk要求等,最终弃用】
-- for AT mode you must to init this sql for you business database. the seata server not need it.
CREATE TABLE undo_log
(
id NUMBER(19) NOT NULL,
branch_id NUMBER(19) NOT NULL,
xid VARCHAR2(100) NOT NULL,
context VARCHAR2(128) NOT NULL,
rollback_info BLOB NOT NULL,
log_status NUMBER(10) NOT NULL,
log_created TIMESTAMP(0) NOT NULL,
log_modified TIMESTAMP(0) NOT NULL,
PRIMARY KEY (id),
CONSTRAINT ux_undo_log UNIQUE (xid, branch_id)
);
COMMENT ON TABLE undo_log IS 'AT transaction mode undo table';
-- Generate ID using sequence and trigger
CREATE SEQUENCE UNDO_LOG_SEQ START WITH 1 INCREMENT BY 1;