2014-07-05 3 views
2

내 응용 프로그램에 사용자를 추가하는 기능이 있습니다. 그것은 몇 가지 체크, 소금 및 해시 암호를 누른 다음 값을 삽입합니다. 내가 기능을 실행할 때 지금, 나는Posgresql "유효하지 않은 종료 시퀀스"

ERROR: invalid end sequence 

이 (솔직히 말해서, 이탈리아어에서 그것을 얻을하고 해당 영어 문자열을 찾기 위해 상당히 일을했다) 얻을. 이제는 단일 부품 만 잘 작동하지만, 함수에 모든 것을 집어 넣으면 오류가 발생하여 아이디어가 붕괴됩니다. 어떠한 제안?

+0

코드가 어디도 시도 :

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

ERROR: invalid end sequence

에 반대? –

+1

팁 : (현재 세션에서만) 영어 오류 메시지를 얻으려면'SET lc_messages = 'C ''를 실행하십시오. –

+1

추가 팁 : 오류의 출처를 알아 내려고 할 때'psql'에있는'verbose verbose verbose' 명령으로 더 많은 정보를 얻을 수 있습니다. 또한, 역 변환을 위해서, 소스 코드에서'.po' 파일을 grep 할 수 있습니다. –

답변

4

이 오류는 잘못 인코딩 된 base64 내용을 디코딩하려고 할 때 발생합니다. 예 :

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

'decode (...) : 잘못된 base64 end sequence, missing padding 같은 더 나은 오류를 사용할 수있는 것 같습니다. '패치를 제출할 것입니다. 로그 상세 정보를 활성화하면 유용한 컨텍스트 메시지가 최소한 제공됩니다. –

+0

'\ set VERBOSITY verbose','select decode ('fredd', 'base64');는'ERROR : 22023 : end sequence가 유효하지 않습니다. ','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,