快乐的时光总是转瞬即逝,尤其是当我们面对bug时,不仅浪费了宝贵的时间,更让人感到沮丧。因为bug往往是非常奇怪、难以捉摸的,找来找去你始终无法确定问题所在,最终意识到这些bug并没有多大技术含量。尽管如此,它们却能占据你大量的精力和时间。

这样反复琢磨,往往并没有多大意义,甚至对于个人的技术成长帮助也微乎其微。与其如此,不如趁这个时间去翻阅文档、深入学习,这样或许能得到更有价值的提升。今天,我将结合一个旧项目的案例,介绍如何借助AI代码助手来快速定位和解决bug,帮助你更高效地提升工作效率,节省调试时间,避免掉入冗长的bug修复死循环中。

今天的主题主要会涉及一些关于SQL快速排错的技巧与方法。

快速拍错

没有足够的值

当前市场上存在许多流行的代码生成插件,然而这些插件在生成代码的位置上通常是固定的,并且大多偏向于MySQL数据库。这种情况使得对于老旧项目的开发者来说,使用这些插件显得格外困难,只能采取逐步编写的方式进行调整与优化。

今天我遇到了一个与此相关的bug。在我的项目中,我使用了Oracle的merge语句来处理插入和更新操作,以应对数据缺失和数据存在两种情况。下面是大致的SQL语句示例:

merge into table a
using () b
on (a.pk = b.pk)
when not matched then
insert ( ) values()
when matched then
update set a.value = b.value

看起来似乎没有太大的问题,按照既定的结构进行撰写就可以了。然而,考虑到表结构包含大约40到50个字段,这时你还能够逐个手动输入吗?显然,这样会耗费大量的时间和精力。因此,我决定直接将表结构提供给AI助手,让它帮我进行代码的自动生成,以便快速完成任务。

当然,我个人更倾向于使用补全功能,这样可以让我慢慢确保代码的准确性。例如,可以按照下面的方式进行操作:

紧接着,联调测试的时候,发现还是少了一个值,报错如下。此时,根据以往的经验,需要进一步进行人工排查和分析,基本会耗费5-10分支时间去排错。

我们可以直接利用AI助手,让它为我们高效地搜索和定位所需的信息。

刚才我们提出的问题表达得比较模糊,因此希望能够进一步明确一下具体缺失的是哪个字段。

非常顺利,最后成功运行了,如图所示:

赋值问题

尽管我在前端已经明确传递了某个字段的值,但为什么在实际操作中没有成功赋值?同时,我的SQL语句中也确实包含了该字段的插入操作。为了更好地解决这个问题,我会毫不犹豫地向AI助手寻求指导。如图所示:

发现是由于忘记编写getter方法导致的问题。老旧项目中没有使用Lombok,这是没办法的事情,我们必须手动实现这些方法。经过修复后,相关属性能够正常赋值。

对比字段

目前,由于两个系统所直接使用的数据库存在不一致的问题,这将导致后续的维护工作变得异常困难。因此,根据业务需求,我们需要对数据进行补齐。然而,我发现至少缺少五个数据项,并且这些数据的顺序也已经被打乱。自行进行排查无疑会浪费大量时间。

在这种情况下,使用AI代码助手将是一个极为有效的解决方案,如下图所示:

很快就能得出结果,直接将SQL生成完成,后续只需将SQL上线即可,无需再做额外调整。

最后,在不断地向AI代码助手请教的过程中,我终于成功完成了CRUD这项基本任务。这样一来,我再也不需要浪费时间和精力去处理那些琐碎而无意义的错误了。

总结

在软件开发的过程中,我们常常会遇到各种棘手的bug,它们可能看似无害,但却能消耗大量时间和精力。虽然解决这些问题本身可能并没有太大技术挑战,但长时间的调试和排查无疑会使人感到沮丧。然而,借助现代技术工具,尤其是AI代码助手,我们能够大大提高效率,避免陷入无休止的错误修复死循环。

通过今天的分享,我们看到如何利用AI助手快速定位并解决SQL排错问题,节省调试时间,同时提升工作效率。与其在错误中反复徘徊,不如学会借助工具,让自己能够更加专注于技术的深度探索与创新。


我是努力的小雨,一名 Java 服务端码农,潜心研究着 AI 技术的奥秘。我热爱技术交流与分享,对开源社区充满热情。同时也是一位腾讯云创作之星、阿里云专家博主、华为云云享专家、掘金优秀作者。

我将不吝分享我在技术道路上的个人探索与经验,希望能为你的学习与成长带来一些启发与帮助。

欢迎关注努力的小雨!

借助AI助手如何高效排查SQL问题的更多相关文章

  1. 微软推出中文学习AI助手Microsoft Learn Chinese

    ​ 编者按:美国总统特朗普访华期间,他6岁的外孙女阿拉贝拉用中文普通话演唱和背诵传统诗歌的视频在中国社交媒体上引起广泛关注,可以感受得到,越来越多的人对中文学习充满了兴趣.智能私教微软小英帮助很多中国 ...

  2. 最佳案例 | 游戏知几 AI 助手的云原生容器化之路

    作者 张路,运营开发专家工程师,现负责游戏知几 AI 助手后台架构设计和优化工作. 游戏知几 随着业务不断的拓展,游戏知几AI智能问答机器人业务已经覆盖了自研游戏.二方.海外的多款游戏.游戏知几研发团 ...

  3. Oracle如何写出高效的SQL

    转载:http://www.blogjava.net/ashutc/archive/2009/07/19/277215.html 1.选择最有效率的表明顺序(只在基于规则的优化器中有效) Oracle ...

  4. Oracle 如何写出高效的 SQL

    转自:Oracle 如何写出高效的 SQL 要想写出高效的SQL 语句需要掌握一些基本原则,如果你违反了这些原则,一般情况下SQL 的性能将会很差. 1. 减少数据库访问次数连接数据库是非常耗时的,虽 ...

  5. 如何编写高效的SQL

    编写高效的sql可以给用户带来好的体验,需要开发这没有意识到这一点因为他们不关心也不知道怎么做.高效的sql可以给用户节省很多时间,这样就不需要dba来找上门,也不需要搭建RCA和性能调优. 性能不好 ...

  6. 1.svn 彻底clear时,注意代码备份 2.借助vc助手加头文件

    1.svn 彻底clear时,注意代码备份 2.不小心彻底clear可以在回收站找到 3.借助vc助手加头文件

  7. MySql如何编写高效的SQL

    最近应团队要求,研究整理了下,mysql相关的优化,有些是根据实际java项目中碰到的情况经验之谈.欢迎讨论~ SQL 语言是一种强大而且灵活的语言,在使用 SQL 语言来执行某个关系查询的时候,用户 ...

  8. 08 高效的SQL

    编写高效 SQL 需要以下知识 有关所查询内容的物理组织的知识 数据库能做什么的知识, 例如: 如果你不知道跳跃扫描索引及其用途, 那么你可能会看着模式说”索引丢了” SQL 所有错综复杂的知识 对目 ...

  9. 理解SQL原理,写出高效的SQL语句

    我们做软件开发的,大部分人都离不开跟数据库打交道,特别是erp开发的,跟数据库打交道更是频繁,存储过程动不动就是上千行,如果数据量大,人员流动大,那么我们还能保证下一段时间系统还能流畅的运行吗?我们还 ...

  10. 使用 NineData 高效编写 SQL

    SQL 是 Structured Query Language 的缩写,中文翻译为"结构化查询语言".它是关系型数据库的标准语言,所有的关系型数据库管理系统(RDBMS),比如 M ...

随机推荐

  1. 在stable diffussion中完美修复AI图片

    无论您的提示和模型有多好,一次性获得完美图像的情况很少见. 修复小缺陷的不可或缺的方法是图像修复(inpainting).在这篇文章中,我将通过一些基本示例来介绍如何使用图像修复来修复缺陷. 需要的软 ...

  2. .NET全局静态可访问IServiceProvider(支持Blazor)

    DependencyInjection.StaticAccessor 前言 如何在静态方法中访问DI容器长期以来一直都是一个令人苦恼的问题,特别是对于热爱编写扩展方法的朋友.之所以会为这个问题苦恼,是 ...

  3. PHP命令执行与绕过

    一.eval()函数调用--无严格过滤: 1.highlight_file()高亮显示: ?c=highlight_file(base64_decode("ZmxhZy5waHA=" ...

  4. 2.3.1 ChatGLM3简介与安装

    安装:pip install modelscope pip install torch==2.0.1 torchaudio torchvision -i https://pypi.tuna.tsing ...

  5. 第16天:信息打点-CDN绕过&业务部署&漏洞回链&接口探针&全网扫描&反向邮件

    #CDN配置: 配置1:加速域名-需要启用加速的域名 配置2:加速区域-需要启用加速的地区 配置3:加速类型-需要启用加速的资源 #参考知识: 超级Ping:http://www.17ce.com/ ...

  6. .Net技术栈

    一.后端 1. 框架 C# 异步多线程 委托 事件 标准事件模式 泛型 特性 反射 Linq Lambda Expression表达式树 PLinq IO文件操作 XML操作 .Net IOC/DI依 ...

  7. 浅谈数栈产品里的 Descriptions 组件

    我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值. 本文作者:修能 What's? 数栈产品里的 Description ...

  8. c++中字符/串->整数

    char字符->整数数字:std::isdigit 用于判断某个字符是否为数字(0-9). 字符串->数字:std::stoi 用于将字符转换为整数. int isdigit( int c ...

  9. Linux-USB驱动笔记-Gadget Function驱动

    1.前言 在Linux-USB驱动笔记(四)–USB整体框架中有説到Gadget Function驱动,下面我们来具体看一下. Gadget Function就是指设备的功能,比如作为U盘,需要文件存 ...

  10. vagrant快速安装虚拟机