Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python 3.4和mysql信号_Python_Mysql_Signals - Fatal编程技术网

python 3.4和mysql信号

python 3.4和mysql信号,python,mysql,signals,Python,Mysql,Signals,我是python的新手,在调用可能生成信号()的存储过程时遇到了一个问题。我无法将信号捕获为标准的mysql异常(与.net环境(C#)相反,后者返回异常-如预期的那样) 问题是,以下存储过程在mysql控制台中以及调用“SHOW WARNINGS”后返回错误,但除了语法之外,它不使用python处理 DROP PROCEDURE IF EXISTS `TEST_CALL_ME_ERROR`; DELIMITER // CREATE DEFINER=root@localhost PROCEDUR

我是python的新手,在调用可能生成信号()的存储过程时遇到了一个问题。我无法将信号捕获为标准的mysql异常(与.net环境(C#)相反,后者返回异常-如预期的那样)

问题是,以下存储过程在mysql控制台中以及调用“SHOW WARNINGS”后返回错误,但除了语法之外,它不使用python处理

DROP PROCEDURE IF EXISTS `TEST_CALL_ME_ERROR`;
DELIMITER //
CREATE DEFINER=root@localhost PROCEDURE TEST_CALL_ME_ERROR() DETERMINISTIC  

    MAIN_BLOCK: BEGIN

        SELECT 'THIS IS ONLY TEST' FROM DUAL;
        SIGNAL SQLSTATE '01000' SET MESSAGE_TEXT = 'I AM THE ERROR.', MYSQL_ERRNO = 1001;

END MAIN_BLOCK;
我从连接器(使用mysql c库)尝试了pymysql和mysql


存储过程本身可能不会导致错误,因为它在语法上是正确的(尽管其代码会输出错误消息)。很可能,打印其结果会有帮助。您可以通过在存储过程中故意编写无效语法来测试这一理论

Try
块中考虑以下任何迭代:

results = cursor.callproc('TEST_CALL_ME_ERROR', ())
print(results)


(唤醒僵尸!)您的问题在于,您使用的是以
01
开头的信号代码(保留用于有效响应),因此您的响应不是错误,因此在python中不作为异常处理

我没有测试它,但在我看来,问题可能与状态有关。但是,以01开头的信号代码表示警告状态(00表示成功的警告状态)。此外,我使用了一个属性“raise_on_warnings”,我希望它能像文档提供的示例一样工作。如果我显式地使用错误信号,它可能会像我预期的那样工作,并引发异常。
results = cursor.callproc('TEST_CALL_ME_ERROR', ())
print(results)
cursor.callproc('TEST_CALL_ME_ERROR', ())
results = cursor.fetchone()
print(results)
cursor.execute('call TEST_CALL_ME_ERROR();')
results = cursor.fetchone()
print(results)