假设我有一个存储过程:
DELIMITER $$
CREATE DEFINER=`root`@`%` PROCEDURE `SetupBlocks`(
IN myBlock VARCHAR(20)
)
BEGIN
INSERT INTO blocks (block)
VALUE (myBlock);
END
如果我在代码和数据库设置中犯了错误,并且 block
列仅允许 15 个字符,但使用我的应用程序的人已经能够将 20 个字符放入 myBlock
?对于此示例,我会收到与此类似的错误:
Error Code: 1406. Data too long for column 'block'
是否有某种方法可以处理任何错误(不仅仅是这个错误),然后将其报告到名为 BlockSprocErrors
的表中,以便在 MySQL 和存储过程本身内进行监视?
只是通过修改上面的过程来寻找一个非常基本的示例。
最佳答案
这是我最终所做的:
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
GET DIAGNOSTICS condition 1
@SQLState = RETURNED_SQLSTATE, @SQLMessage = MESSAGE_TEXT;
SELECT CONCAT('Database error occurred, state - ',@SQLState, '; error msg - ', @SQLMessage) INTO @errorString;
CALL Collectors_Errors
(@errorString,
'Collectors_InsertAlbum',
barcodeApp,
usernameApp);
END;
关于mysql - 如何处理基本 MySQL 存储过程中的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19505248/