【问题标题】:MySQL stored procedure privileges from external call来自外部调用的 MySQL 存储过程权限
【发布时间】:2014-04-22 22:13:19
【问题描述】:

我有一个需要使用“更新”命令的存储过程。当该过程从 MySQL 工作台中运行时,它会正确执行。从外部 Python 脚本调用过程时,不会执行最终的更新语句。

我正在使用 Python 脚本和工作台中的同一帐户登录数据库。

当从 Python 调用时,以前的更新语句在该过程中起作用。

在 Python 中工作的更新语句:

update filelocations set cluster_id=NULL;

在 Python 中起作用的更新语句:

update searchdata set cluster_id=(select cluster_id from km_data where ID =         searchdata.TweetID);

该程序使用“root”作为定义器,我以 root 身份登录。 Root 拥有所有特权,所以我不知道接下来要调查什么!

代码:

CREATE DEFINER=`root`@`localhost` PROCEDURE `overallKmeans`(tweet_limit int, cluster_num   int)
BEGIN

truncate table km_data;

update searchdata set cluster_id=NULL;
update filelocations set cluster_id=NULL;

调用语句(用于工作台和Python):

CALL `tweets`.`overallKmeans`(<{tweet_limit int}>, <{cluster_num int}>);    

这里没有给出错误消息,它只是不更新​​所需的值。将它们保留为原件。该过程似乎正常完成。

这里是 km_data 的创建语句:

CREATE TABLE `km_data` (
`primaryID` int(11) NOT NULL AUTO_INCREMENT,
`ID` bigint(20) DEFAULT NULL,
`lat` double DEFAULT NULL,
`lng` double DEFAULT NULL,
`cluster_ID` int(11) DEFAULT NULL,
 PRIMARY KEY (`primaryID`)
) ENGINE=InnoDB AUTO_INCREMENT=383 DEFAULT CHARSET=utf8;

字段“cluster_id”是试图在“searchdata”中更新的字段。这是唯一一个在 Python 中不起作用的更新。

【问题讨论】:

  • 能否提供一些代码。
  • 这很奇怪。它在mysql内部工作。唯一的问题可能出在 python 代码中。

标签: python mysql sql stored-procedures sql-update


【解决方案1】:

我今天遇到了同样的问题。当您在调用存储过程之后“提交”您的更改时似乎可以工作。

步骤: 1.Cursor.callproc("xyz") 2.Cursor.execute("commit")

我是从遇到类似 pyodbc 问题的人那里挑选的...

谢谢, M

【讨论】:

    猜你喜欢
    • 2012-04-22
    • 1970-01-01
    • 2017-08-22
    • 2019-02-13
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    相关资源
    最近更新 更多