MySQL数据库切换瀚高数据库(PostgreSQL)导致SQL适配问题:BadSqlGrammarException

温馨提示:

下面的出现的情况属于层层递进的,如果只解决其中一种情况会接着报下一个情况,如果只想了解解决方案请直接移步至结论

1. 情况一:ERROR: operator does not exist: smallint = character varying

  1. 报错详细描述:

 2. 产生原因:

        在SQL查询中尝试执行了一个不被支持的数据类型比较操作。

3. 解决方案:

        在application.yaml文件中,在url后加&stringtype=unspecified,例如:

spring:
  datasource:
    driver-class-name: com.highgo.jdbc.Driver
    url: jdbc:highgo://localhost:5866/highgo?currentSchema=demo&stringtype=unspecified
    username: root
    password: root

 2. 情况二:ERROR: could not determine data type of parameter $5

1. 报错详细描述:

 2. 产生原因:

        常常发生在模糊匹配上。在执行参数化查询时,数据库无法识别或推断出传入参数的具体数据类型。

3. 解决方案:

        需要在注入的值后加::数据类型。例如要模糊匹配varchar类型的name:

        原sql语句为:

SELECT * FROM demo WHERE name LIKE CONCAT('%',#{keyword},'%');

        修改后sql语句为:

SELECT * FROM demo WHERE name LIKE CONCAT('%',#{keyword}::text,'%');

        或者可以修改为:

SELECT * FROM demo WHERE name LIKE CONCAT('%',#{keyword}::varchar,'%');

 3. 情况三:ERROR: could not determine data type of parameter $1

1. 产生场景:

        在本地运行时,sql可以正常运行。在部署后,测试sql会报出该错误。一般发生在模糊匹配。

2. 产生原因:

        a. 在执行参数化查询时,数据库无法识别参数$1的确切数据类型。

        b. 本地开发环境与生产环境的配置不同。

3. 解决方案

         在模糊匹配后加 ESCAPE '/' ,如:

        原sql语句:

SELECT * FROM demo WHERE name LIKE CONCAT('%',#{keyword}::varchar,'%');

        修改后sql语句: 

SELECT * FROM demo WHERE name LIKE CONCAT('%',#{keyword}::varchar,'%') ESCAPE '/';

4. 结论:

第一步,修改appliction.yaml。在application.yaml文件中,在url后加&stringtype=unspecified,例如:

spring:
  datasource:
    driver-class-name: com.highgo.jdbc.Driver
    url: jdbc:highgo://localhost:5866/highgo?currentSchema=demo&stringtype=unspecified
    username: root
    password: root

第二步,修改sql语句。模糊匹配位置 ,将填充的值指定数据类型,并在CONCAT函数后加 ESCAPE '/'。如:

原sql语句:

SELECT * FROM demo WHERE name LIKE CONCAT('%',#{keyword},'%');

修改后sql语句为: 

SELECT * FROM demo WHERE name LIKE CONCAT('%',#{keyword}::varchar,'%') ESCAPE '/';

或:

SELECT * FROM demo WHERE name LIKE CONCAT('%',#{keyword}::text,'%') ESCAPE '/';

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/745870.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

每日一学(1)

目录 1、ConCurrentHashMap为什么不允许key为null? 2、ThreadLocal会出现内存泄露吗? 3、AQS理解 4、lock 和 synchronized的区别 1、ConCurrentHashMap为什么不允许key为null? 底层 putVal方法 中 如果key || value为空 抛出…

python-登录界面-demo

文章目录 前言python-登录界面-demo 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!! python-…

Wp-scan一键扫描wordpress网页(KALI工具系列三十)

目录 1、KALI LINUX 简介 2、Wp-scan工具简介 3、信息收集 3.1 目标IP(服务器) 3.2kali的IP 4、操作实例 4.1 基本扫描 4.2 扫描已知漏洞 4.3 扫描目标主题 4.4 列出用户 4.5 输出扫描文件 4.6 输出详细结果 5、总结 1、KALI LINUX 简介 Kali Linux 是一…

如何解决ssh远程连接自动断开的问题

文章目录 1. 问题描述2. 配置SSH设置2.1 调整服务器端的设置2.2 调整客户端的设置 3. 调整用户断开时长 1. 问题描述 SSH 远程连接断开是一个常见的问题,尤其是在网络不稳定或长时间没有活动时。文本介绍一些常见的方法和技巧来保持 SSH 连接稳定和避免断开。 2. …

第十八课,函数基本语法规则

一,编程中函数的介绍 函数像一个黑盒子、加工厂、榨汁机等等(你能想到的任何类似的比喻),它会经过一个固定的规则将你送入其中的参数变成另一个样子、或者实现某种预想的功能(比如print()函数、input()函数、以及在tu…

33 超级数据查看器 高级搜索

大家好,今天我们讲一下超级数据查看器的高级搜索功能, 超级数据查看器是一个安卓APP。具有数据管理和数据查询功能。 能够将Excel文件、文本导入,转为手机数据库,实现快速查询,实现自动构建手机端的查询系统。 今天我…

【python】python入门day1

python入门 Python解析器Python注释Python中的变量(重点)练习:1、用python的print函数描述一段对话2、与计算机模拟一段对话,并且最终计算机需要将输入的内容全部输出3、模拟两个对话场景(根据提示输入内容,并且在后续…

MS31011低压 5V DC 电机驱动

MS31011 是一款低压 5V 直流电机驱动芯片,为摄像机、消 费类产品、玩具和其他低压或者电池供电的运动控制类应用提 供了集成的电机驱动解决方案。 MS31011 能提供高达 0.8A 的输出电流。可以工作在 2.0~5.5V 的电源电压上。 MS31011 具有 PWM &#x…

day21--669. 修剪二叉搜索树 +108.将有序数组转换为二叉搜索树+538.把二叉搜索树转换为累加树

一、669. 修剪二叉搜索树 题目链接:https://leetcode.cn/problems/trim-a-binary-search-tree/ 文章讲解:https://programmercarl.com/0669.%E4%BF%AE%E5%89%AA%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.html 视频讲解:https://www.bi…

B=MAP执行力公式 | 一条公式参透执行力的本质

🧐什么是【福格行为模型】呢?这个模型是斯坦福大学行为研究院院长福格教授提出的,一个【行为 Behavior】的发生,主要是由【动机 Motivation】、【能力 Ability】和【提示 Prompt】决定,即【BMAP】 🌈【动机…

【揭秘新潮流】实践教学新宠SmartEDA,让电子设计课“潮“起来!

在信息时代的浪潮下,电子设计课程早已不再是枯燥乏味的代名词。随着技术的飞速发展,一种名为SmartEDA的实践教学新选择正逐渐崭露头角,为电子设计课程注入了前所未有的活力与趣味性。今天,就让我们一起走进SmartEDA的世界&#xf…

封装图片占位图组件

<laze-image class="image" :url="item.image" :game_name="item.game_name" :placeholder="require(@/static/images/common/placeholder.png)"></laze-image> 1.通过调用组件实现 先加载预览图片,再加载真实的图片 2…

Git的安装配置及使用(超详细!!!)

一、git概述 它是一个版本管理工具. 版本: 软件开发过程当中的重要节点. 作用: 团队协作,管理代码. 对于软件的学习, 会用就行. 1.1 安装及配置 下载地址: github.com 安装注意事项: 傻瓜式安装,一直下一步就好. 安装目录不要有中文. 尽量也不要有空格. 配置环境变量: 找到…

未来出行新选择——加油宝APP,让您的每一次加油都充满智慧与便捷!

一、前言 随着科技的飞速发展&#xff0c;智能手机已经成为我们生活中不可或缺的一部分。为了满足广大车主对便捷、高效加油服务的需求&#xff0c;我们倾力打造了全新的加油宝APP。这款APP不仅为您提供一站式的加油服务&#xff0c;还融合了多项创新功能&#xff0c;让您的出…

注意!!2024下《系统分析师》易混淆知识点来了,赶紧收藏

宝子们&#xff0c;在复习软考系统分析师中&#xff0c;是不是觉得有很多知识点含义比较相近&#xff0c;很多友友刚看的时候估计会像我一样迷迷糊糊的&#xff0c;作为一个软考老鸟&#xff0c;在这里给大家整理了系分学习过程中易混淆的知识点&#xff0c;大家认真复习就行&a…

jmeter乱码汇总

一、Web页面乱码 如果想让他显示中文可以按以下操作: 1、打开jmter配置文件 bin/jmeter.properties 2、修改配置文件&#xff0c;查找“sampleresult.default.encoding”将其改为utf8&#xff0c;注意要去掉“#”号 sampleresult.default.encodingutf-8 3、重启 jmeter 4、再次…

AI作画Prompt不会写?Amazon Bedrock Claude3.5来帮忙

最新上线的Claude3.5 Sonnet按照官方介绍的数据来看&#xff0c;在多方面超越了CPT-4o&#xff0c;是迄今为止最智能的模型。 而跟上一个版本相比&#xff0c;速度是Claude 3 Opus的两倍&#xff0c;成本只有其五分之一。 Claude3.5 Sonnet不仅擅长解释图表、图形或者从不完…

基于Java微信小程序民宿短租系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f;感兴趣的可以先收藏起来&#xff0c;还…

如何学习训练大模型——100条建议(附详细说明)

摘要&#xff1a; 通过深入了解本文中的这些细节&#xff0c;并在实际项目中应用相关知识&#xff0c;将能够更好地理解和利用大模型的潜力&#xff0c;不仅在学术研究中&#xff0c;也在工程实践中。通过不断探索新方法、参与项目和保持热情&#xff0c;并将其应用于各种领域&…

新版本发布丨昂辉科技EasySAR-Configurator V1.2.0再启航

昂辉科技新一代跨平台高性能AUTOSAR配置工具EasySAR-Configurator V1.2.0全新版本重磅发布&#xff01;产品基于Web架构前后端分离的方式开发&#xff0c;可提供SaaS部署&#xff0c;能够实现精准配置和最大限度的代码裁剪&#xff0c;且配备标准的约束限制、配置验证、代码生成…