0

假设我有一个存储过程:

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 和存储过程本身内进行监控?

只是通过修改我上面的程序来寻找一个非常基本的例子。

4

1 回答 1

0

这是我最终做的事情:

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;
于 2013-10-21T22:38:30.187 回答