更改表的字段text类型为varchar不支持

【 使用环境 】测试环境
【 OB 】
【 使用版本 :5.7.25-OceanBase-v3.2.3.3】
【问题描述】执行alter table 表名 modify column relation varchar(16000)comment"关系";
【报错信息:】
SQL错误[1235][0A000]: Modify large text/lob column not supported
Modify large text/lob column not supported
【复现路径】新建表包含有text类型的字段,执行sql变更为varcahr类型
@论坛小助手

1 个赞

针对您在测试环境中尝试将包含 text 类型字段的表更改为 varchar 类型时遇到错误 1235 的情况,报错信息为 ‘Modify large text/lob column not supported’,这通常是因为 OceanBase 目前并不支持直接修改大文本或大对象列的类型。这类操作可能会涉及到底层存储结构的重大变更,OceanBase 为了保证数据的安全性和一致性,暂时限制了此类修改。

推荐使用 obdiag 工具进行根因分析和日志采集

虽然在这种情况下 obdiag 可能不会直接提供解决方案,但通过收集日志可以进一步确认错误的具体原因。以下是建议的步骤:

根因分析场景: DDL过程中报磁盘空间不足的问题(如果没有明显的磁盘空间问题,则跳过此步骤)

根因分析命令: obdiag rca run --scene=ddl_disk_full
解释: 这个命令可以帮助我们检查是否因为磁盘空间不足导致 DDL 操作失败。虽然您的报错信息看起来并不是由于磁盘空间问题,但我们仍然可以通过这个命令排除可能性。

日志采集场景: DDL操作失败

日志采集命令: obdiag gather scene run --scene=observer.ddl_failure
解释: 这个命令会收集与 DDL 操作相关的日志信息,有助于我们进一步分析为什么修改 text 列类型的操作失败了。

请您执行上述命令,并将采集到的日志压缩包提供给我们,以便我们能够更详细地查看日志并提供进一步的帮助。

为了更好地帮助您,请您提供以下信息:

  1. 您当前数据库的具体版本信息(包括补丁版本)。
  2. 涉及到的表的结构定义,特别是 text 类型字段的具体定义。
  3. 您执行的 DDL 语句的具体内容。
  4. 如果可能的话,提供关于这个表的数据量信息(例如,表的大小、行数等)。
  5. 您是否有任何自定义配置或环境设置?

谢谢您的配合!

附上敏捷诊断工具 obdiag 使用帮助链接

2 个赞

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

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

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

另外,我们欢迎你使用社区版,并在论坛/社群中分享你对社区版本的想法、经验和问题,与其他社区成员共同交流。

1 个赞