2014-07-05 44 views
2

我有一個功能,它將用戶添加到我的應用程序中。它做了一些檢查,鹽和哈希密碼,然後插入值。現在,當我運行的功能,我得到Posgresql「無效結束序列」

ERROR: invalid end sequence 

(說實話,我明白了在意大利,不得不做了很多的工作,找到對應的英文字符串)。 現在,單個部件單獨工作得很好,但是如果我把所有的東西放在一個函數中,我會得到這個錯誤,所以我非常想不到。任何建議?

+0

哪裏碼? –

+1

提示:要獲取英文錯誤消息(僅在當前會話中)運行SET c_messages ='C''。 –

+1

附加提示:當試圖找出錯誤的起源時,'psql'中的'\ set VERBOSITY verbose'會給你更多的信息。另外,對於反向翻譯,您可以只對源代碼中的'.po'文件進行grep。 –

回答

4

嘗試解碼錯誤編碼的base64內容時發生此錯誤。例如:

=> select decode('aa', 'base64'); 

ERROR: invalid end sequence

,而不是:

=> select decode('aa==', 'base64'); 
 
decode 
-------- 
\x69 
(1 row) 
+1

似乎可以使用更好的錯誤,比如'decode(...):無效的base64結束序列,缺少填充?'我會提交一個補丁。儘管啓用日誌詳細程度至少會提供有用的上下文消息。 –

+0

'\ set VERBOSITY verbose','SELECT decode('fredd','base64');'發出'ERROR:22023:無效結束序列','LOCATION:b64_decode,encode.c:327'。 –

+1

...並完成。 http://www.postgresql.org/message-id/[email protected] –

0

嘗試也

case 
    when char_length(sequence) in (6, 10, 14) then decode(sequence::text || '==', 'base64'::text)::character varying 
    when char_length(sequence) in (7, 11, 15) then decode(sequence::text || '=', 'base64'::text)::character varying 
    when char_length(sequence) in (8, 9, 12, 13) then decode(sequence::text, 'base64'::text)::character varying 
    else null 
end AS sequence,