MySQL数据库切换瀚高timestamp类型问题

环境

系统平台:中标麒麟(龙芯)6
版本:4.5

症状

程序控制台打印信息:
com.highgo.jdbc.util.PSQLException: ERROR: column “create_time” is of type timestamp without time zone but expression is of type character varying
建议:You will need to rewrite or cast the expression.

问题原因

客户源库为MySQL,数据库字段类型为timestamp,但是客户插入数据时,强转插入数据为string数组。切换到瀚高数据库后,

数据库类型为timestamp,应用中还是string类型,导致插入数据类型与数据库类型不一致报错
在这里插入图片描述

解决方案

解决方案1、

修改数据库中表字段的类型,客户前台未进行格式限制,防止插入数据格式不正确。表上该字段添加trigger

CREATE TRIGGER example_trigger before insert or update ON 表名 FOR EACH ROW EXECUTE PROCEDURE auditisdatefunc();

CREATE OR REPLACE FUNCTION  auditisdatefunc()

    RETURNS boolean

AS $$

begin

IF (NEW.验证的列名 IS NULL) THEN

     RETURN FALSE;

END IF;

     PERFORM NEW.验证的列名::timestamp;

     RETURN TRUE;

EXCEPTION

     WHEN others THEN

     RETURN FALSE;

end

$$

    LANGUAGE 'plpgsql'
解决方案2

添加cast(varchar as timestamp) with inout as implicit

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值