好的,我有一个应用程序,它是工作的。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` |
+--------------------------------------------------------------------------------------------------------+
一切看起来都很到位,但是数据库里没有更新......我不知道,有人知道这件事吗?
谢谢提前很多。
1条答案
按热度按时间ifmq2ha21#
好吧,虽然我不知道为什么,我能够解决我的问题。
我没有重新创建丢失的用户并向其授予权限(这不起作用),而是编辑了存储过程,更改了
mysql
.proc
表中的定义符,它立即起作用了。我想这是一个丑陋的修复,但经过数周的故障现场应用程序,它仍然是一个救济...