首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【YashanDB知识库】yasql对字符串中分号的判定

【YashanDB知识库】yasql对字符串中分号的判定

作者头像
用户10349277
发布2025-02-24 14:47:53
发布2025-02-24 14:47:53
1530
举报
文章被收录于专栏:YashanDB知识库YashanDB知识库

问题现象

drop table test_tab; create table test_tab(col1 varchar(100)); insert into test_tab values(' aa; '); insert into test_tab values(' aa;');

这个问题发生在从pg向崖山进行数据迁移的过程中,通过pg_dump将数据导出到文件后进行执行,第一条语句执行报错,在pg上执行是不会报错的,在崖山和oracle上执行均报错。

与之相似的问题还有:

drop table test_tab; create table test_tab(col1 varchar(100)); insert into test_tab values('aa');insert into test_tab values('bb');

问题的风险及影响

SQL语句执行报错,数据插入不成功。

问题影响的版本

所有版本。

问题发生原因

oracle和崖山目前对分号的处理方法是读取一行,如果这一行的末尾是分号,就认为当前SQL结束了。而本质问题是这个分号产生了歧义,数据库并不知道究竟是操作员写错了语句,还是语句本身就是这样。

解决方法及规避方式

修改语句:

insert into test_tab values(' aa'||';'||' ');

问题分析和处理过程

通过源码和oracle、pg对比测试得到问题原因。

经验总结

目前这个问题已经在进行修复,碰到之后可以通过修改语句解决。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档