mysql存储过程同步问题

本文介绍了一种在MySQL中设置同步后,运行存储过程中遇到的问题及解决方案。问题出现在使用bit类型参数传递true/false时,虽然在控制台可以正常执行,但在同步过程中会出现错误。解决方法是将存储过程中的true/false替换为1/0。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在设置好mysql同步后,运行存储过程测试,

存储过程

CREATE DEFINER=`root`@`localhost` PROCEDURE `prodForTran_proc`(in new_uid bigint, in new_pay_orderID varchar(255), in new_pid int, in new_sid int, in new_pct int, in new_price double, in new_pay_type int, in new_app_id int, in new_itemID int, in new_status bit,out flags int) begin DECLARE txn_error INTEGER DEFAULT 0; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN SET txn_error=1; END; start transaction; INSERT INTO shop_userproduct VALUES(new_uid,new_pid,new_sid,new_pct,current_timestamp(),new_status,new_app_id) ON DUPLICATE KEY UPDATE p_count=p_count+new_pct ,create_time=current_timestamp(); insert into shop_order values(null,new_pay_orderID,new_uid,new_pay_type,new_price,new_pid,new_pct,current_timestamp(),new_status); update shop_item set sales = sales + new_pct where itemID=new_itemID; if txn_error=1 then rollback; select 0 into flags; insert into shop_order values(null,new_pay_orderID,new_uid,new_pay_type,new_price,new_pid,new_pct,current_timestamp(),false); else COMMIT; select 1 into flags; end if; end

注意其中有in new_status bit 这个参数,当同步运行到这里时,就会报错,不认传进来的‘true‘或者’false‘,同步出错,但是如果不在存储过程里执行,而是在控制台执行插入或者更新’true‘或者’false‘ ,则可以进行同步,所以解决办法为将存储过程中的’true‘或者’false‘值,用1或者0来代替,就不会出现错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值