2015-07-21 36 views
0

我在我的數據庫中的特定表上寫了一個BEFORE INSERT觸發器,以強加一些值限制。該代碼返回一個以分號分隔的錯誤列表。我的意圖是讓我的燒瓶應用程序,然後將這個用戶定義的錯誤消息列表返回給客戶端。如何增加MySQL錯誤消息的最大長度?

但是,如果發生多個錯誤,則會在中間句子中截斷該消息。

這裏是那種編校錯誤消息:

The specified xxxxxxx xxxxx xxxxxxxx (105) exceeds the maximum value (100).; 
The specified xxxxxxx xxxxxxx xxxxx xxxxxxxx (90) is 

下面是一些用於觸發代碼:

BEGIN 
    DECLARE rtn TEXT; 
    DECLARE error BOOLEAN; 
    -- Declare variables here 
    -- Select some values into those variables 
    -- Check new row fields against variables 
    IF error THEN 
    SIGNAL SQLSTATE '02001' 
     SET MESSAGE_TEXT = rtn; 
    END IF; 
+2

沒有足夠的信息來幫助你。我的意見是,MySQL錯誤不應該發生。你應該已經排除了大部分問題。而你還沒有記錄。如果這是**值錯誤,因爲用戶輸入**,那麼他們應該在用戶界面中不在數據庫中!嘗試和保存不良數據並依靠數據庫進行錯誤響應是不合邏輯的。 –

+0

爲什麼試圖保存未驗證的數據並依賴數據庫驗證它是不合乎邏輯的? –

+1

請發佈更多的商店程序代碼,特別是您的示例結果中使用的位。 – 2015-07-22 21:46:43

回答

0

假設你正在使用PHP,有一個異常消息上限。這由php.ini中的log_errors_max_len定義。請參閱此處以獲取更多詳細信息https://bugs.php.net/bug.php?id=31955

您可以嘗試並更改該設置。

但我會建議使用存儲過程/函數來插入數據。它然後可以返回任何長度的錯誤值。