[Date Prev][Date Next] [Chronological] [Thread] [Top]

(ITS#7024) OpenLDAP does not save the attribute "jpegPhoto" in the sql database



Full_Name: Daniil Harun
Version: 2.4.26
OS: FreeBSD, Linux
URL: 
Submission from: (NULL) (80.85.151.246)


OpenLDAP does not save the attribute "jpegphoto" in the sql database.
Use back-sql, unixodbc and postgresql database. The reason for the problem of
the use of the data type SQL_VARCHAR instead of SQL_LONGVARBINARY.

slapd debug output:

   backsql_modify_internal(): adding new values for attribute "jpegPhoto"
   backsql_modify_internal(): arg(2)=1
   backsql_modify_internal(): arg(1)="����";
executing "UPDATE personal SET jpegphoto=? WHERE id=?"
   backsql_modify_internal(): add_proc execution failed (rc=-1, prc=0)
Return code: -1
   nativeErrCode=7 SQLengineState=22021 msg="ERROR: invalid byte sequence for
encoding "UTF8": 0xff;
Error while executing the query"


SQL tracing is enabled:

[ODBC][23880][1313994179.641693][SQLPrepare.c][196]
                Entry:
                        Statement = 0x293eae00
                        SQL = [UPDATE personal SET jpegphoto=? WHERE
id=?][length = 42 (SQL_NTS)]
[ODBC][23880][1313994179.641791][SQLPrepare.c][371]
                Exit:[SQL_SUCCESS]
[ODBC][23880][1313994179.641886][SQLBindParameter.c][217]
                Entry:
                        Statement = 0x293eae00
                        Param Number = 2
                        Param Type = 1
                        C Type = -27 SQL_C_UBIGINT
                        SQL Type = 4 SQL_INTEGER
                        Col Def = 0
                        Scale = 0
                        Rgb Value = 0xbf1fc7a4
                        Value Max = 0
                        StrLen Or Ind = 0x0
[ODBC][23880][1313994179.641988][SQLBindParameter.c][397]
                Exit:[SQL_SUCCESS]
[ODBC][23880][1313994179.642182][SQLBindParamet[ODBC][23880][1313994179.641693][SQLPrepare.c][196]
                Entry:
                        Statement = 0x293eae00
                        SQL = [UPDATE personal SET jpegphoto=? WHERE
id=?][length = 42 (SQL_NTS)]
[ODBC][23880][1313994179.641791][SQLPrepare.c][371]
                Exit:[SQL_SUCCESS]
[ODBC][23880][1313994179.641886][SQLBindParameter.c][217]
                Entry:
                        Statement = 0x293eae00
                        Param Number = 2
                        Param Type = 1
                        C Type = -27 SQL_C_UBIGINT
                        SQL Type = 4 SQL_INTEGER
                        Col Def = 0
                        Scale = 0
                        Rgb Value = 0xbf1fc7a4
                        Value Max = 0
                        StrLen Or Ind = 0x0
[ODBC][23880][1313994179.641988][SQLBindParameter.c][397]
                Exit:[SQL_SUCCESS]
[ODBC][23880][1313994179.642182][SQLBindParameter.c][217]
                Entry:
                        Statement = 0x293eae00
                        Param Number = 1
                        Param Type = 1
                        C Type = 1 SQL_C_CHAR
                        SQL Type = 12 SQL_VARCHAR
                        Col Def = 2790
                        Scale = 0
                        Rgb Value = 0x29529700
                        Value Max = 2790
                        StrLen Or Ind = 0x0
[ODBC][23880][1313994179.642284][SQLBindParameter.c][397]
                Exit:[SQL_SUCCESS]
[ODBC][23880][1313994179.642741][SQLExecute.c][187]
                Entry:
                        Statement = 0x293eae00
[ODBC][23880][1313994179.645733][SQLExecute.c][348]
                Exit:[SQL_ERROR]
                DIAG [22021] ERROR: invalid byte sequence for encoding "UTF8":
0xff;
Error while executing the query
er.c][217]
                Entry:
                        Statement = 0x293eae00
                        Param Number = 1
                        Param Type = 1
                        C Type = 1 SQL_C_CHAR
                        SQL Type = 12 SQL_VARCHAR
                        Col Def = 2790
                        Scale = 0
                        Rgb Value = 0x29529700
                        Value Max = 2790
                        StrLen Or Ind = 0x0
[ODBC][23880][1313994179.642284][SQLBindParameter.c][397]
                Exit:[SQL_SUCCESS]
[ODBC][23880][1313994179.642741][SQLExecute.c][187]
                Entry:
                        Statement = 0x293eae00
[ODBC][23880][1313994179.645733][SQLExecute.c][348]
                Exit:[SQL_ERROR]
                DIAG [22021] ERROR: invalid byte sequence for encoding "UTF8":
0xff;
Error while executing the query

OpenLDAP uses the wrong data - types SQL_C_CHAR,SQL_VARCHAR instead of
SQL_C_BINARY,SQL_LONGVARBINARY. 
How to make use of the correct data types?