服务器更改后,Mysql存储过程不再工作

8cdiaqws  于 2023-02-28  发布在  Mysql
关注(0)|答案(1)|浏览(123)

好的,我有一个应用程序,它是工作的。IT部门把它移到了一个新的服务器上。它仍然工作...除了一件事...它使用了mysql存储过程。
从“用户点击”,到mysql.log:一切正常。我成功地在其中找到了过程调用,并带有适当的参数:10462020 Query CALL deleteUpdateOrder(468, 1)但是,在数据库端,什么也没发生。(日志文件中也没有错误消息)
我检查了程序,它确实也存在于新服务器中:

CREATE DEFINER=`tice`@`%` PROCEDURE `deleteUpdateOrder`(IN `s_id` INT, IN `deleted_q_order` INT)
BEGIN
    DELETE FROM questions WHERE session_id=s_id AND q_order=deleted_q_order;
    UPDATE questions
        SET q_order = q_order-1
    WHERE q_order > deleted_q_order
    AND session_id=s_id;
END

由于服务器之间的用户名发生了一些变化,以防万一我向我的用户'qamphi'添加了权限,使其具有权限(不要认为ALL PRIVILEGES行需要此权限,但只是以防万一):

+--------------------------------------------------------------------------------------------------------+
| Grants for qamphi@localhost                                                                                   |
+--------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `qamphi`@`localhost` IDENTIFIED BY PASSWORD 'RANDOM_DATA_HERE' |
| GRANT ALL PRIVILEGES ON `qamphi`.* TO `qamphi`@`localhost`                                                    |
| GRANT ALL PRIVILEGES ON `qamphi`.`qamphi` TO `qamphi`@`localhost`                                             |
| GRANT EXECUTE ON PROCEDURE `qamphi`.`deleteupdateorder` TO `qamphi`@`localhost`                               |
| GRANT EXECUTE ON PROCEDURE `qamphi`.`proposaldelete` TO `qamphi`@`localhost`                                  |
+--------------------------------------------------------------------------------------------------------+

一切看起来都很到位,但是数据库里没有更新......我不知道,有人知道这件事吗?
谢谢提前很多。

ifmq2ha2

ifmq2ha21#

好吧,虽然我不知道为什么,我能够解决我的问题。
我没有重新创建丢失的用户并向其授予权限(这不起作用),而是编辑了存储过程,更改了mysql.proc表中的定义符,它立即起作用了。
我想这是一个丑陋的修复,但经过数周的故障现场应用程序,它仍然是一个救济...

相关问题