ob3.2x版本,修改字段类型从double改成decimal失败

【 使用环境 】生产环境
【 OB or 其他组件 】OB
【 使用版本 】 3.2.x
【问题描述】执行语句报错,ALTER TABLE bank_flow_extract MODIFY COLUMN trade_amount DECIMAL(18, 2) NULL; 报错信息: [Not supported feature or function]

【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

短时间内没办法升级版本,有什么办法解决吗?

不能直接转换的话,拐个弯试试

试过了,varchar、text都是一样的报错;

加新列,改列名。double 变decimal 可能会丢失数值精度。

(root@10.0.0.65:2881) [test]> create table t1(id bigint not null auto_increment primary key,c1 double);
Query OK, 0 rows affected (0.557 sec)
                                                                                                                                                           
(root@10.0.0.65:2881) [test]> insert into t1 (c1) values(1.1),(2.2),(3.3);
Query OK, 3 rows affected (0.019 sec)
Records: 3  Duplicates: 0  Warnings: 0 

Records: 3  Duplicates: 0  Warnings: 0                                                                                                               [0/53]
                                      
(root@10.0.0.65:2881) [test]> alter table t1 modify c1 decimal;              
ERROR 1235 (0A000): Alter non string type not supported                      
(root@10.0.0.65:2881) [test]> alter table t1 add c2 decimal;                 
Query OK, 0 rows affected (0.045 sec) 
                                      
(root@10.0.0.65:2881) [test]> update t1 set c2=c1;                                                                                                         
Query OK, 3 rows affected (0.017 sec)                                        
Rows matched: 3  Changed: 3  Warnings: 0  
                                                                                                                                                           
(root@10.0.0.65:2881) [test]> alter table t1 change column c1 c3 double, change column c2 c1 decimal;                                                      
Query OK, 0 rows affected (0.030 sec)                                                                                                                      

(root@10.0.0.65:2881) [test]> alter table t1 drop column c3;
Query OK, 0 rows affected (0.054 sec)

(root@10.0.0.65:2881) [test]> show create table t1\G
*************************** 1. row ***************************
       Table: t1
Create Table: CREATE TABLE `t1` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `c1` decimal(10,0) DEFAULT NULL,
  PRIMARY KEY (`id`)
) AUTO_INCREMENT = 1000001 DEFAULT CHARSET = utf8mb4 ROW_FORMAT = DYNAMIC COMPRESSION = 'zstd_1.3.8' REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 0
1 row in set (0.004 sec)

(root@10.0.0.65:2881) [test]> select * from t1;
+----+------+
| id | c1   |
+----+------+
|  1 |    1 |
|  2 |    2 |
|  3 |    3 |
+----+------+
3 rows in set (0.002 sec)
3 个赞

你好,你提的这个技术问题牵涉到OceanBase企业版范围内的功能细节。建议你通过以下方式寻求帮助:

1.如你所在的企业客户已签署OceanBase企业版销售合同,请你联系客户经理;

2.如你所在的企业客户尚未签署OceanBase企业版销售合同,你可通过OceanBase官网商务咨询页面留下你的联系方式,OceanBase企业版的业务顾问会在一个工作日内与你联系。

OceanBase官网商务咨询

https://www.oceanbase.com/contactus?fromPage=https%3A%2F%2Fwww.oceanbase.com%2Fsoftwarecenter-enterprise&dataSources=softwarecenter-enterprise_footercontact_d2022

可能还未支持该特性。ob430是可以修改的


ob 3.x 不支持这种ddl
4.x 支持

不过, 你们是企业版的用户, 找企业版的support, 响应你们会更快

1 个赞

应该是不知道哪里搞来的企业版 :joy:,如果有企业技术对接,一般都会使用4.x的企业版