The following patch was submitted on the SF bugtracker: http://sourceforge.net/tracker/index.php?func=detail&aid=2308998&group_id=681&atid=100681
-------------------------------------------- [PATCH] hbmysql use byte size instead of char lenght every multibyte charachter is stored in 3 byte by MySQL, for it's operation harbour should use the char lenght instead. diff -Naur harbour/contrib/hbmysql.orig/tmysql.prg harbour/contrib/hbmysql/tmysql.prg --- harbour/contrib/hbmysql.orig/tmysql.prg 2008-11-06 15:21:07.000000000 +0100 +++ harbour/contrib/hbmysql/tmysql.prg 2008-11-13 19:46:37.000000000 +0100 @@ -122,7 +122,7 @@ // Char fields are padded with spaces since a real .dbf field would be if ::FieldType(nNum) == "C" - return PadR(::aRow[nNum], ::aFieldStruct[nNum][MYSQL_FS_LENGTH]) + return PadR(::aRow[nNum], ::aFieldStruct[nNum][MYSQL_FS_MAXLEN]) else return ::aRow[nNum] endif @@ -176,7 +176,7 @@ METHOD FieldLen(nNum) CLASS TMySQLRow -return iif( nNum >=1 .AND. nNum <= Len(::aFieldStruct), ::aFieldStruct[nNum][MYSQL_FS_LENGTH], 0 ) +return iif( nNum >=1 .AND. nNum <= Len(::aFieldStruct), ::aFieldStruct[nNum][MYSQL_FS_MAXLEN], 0 ) METHOD FieldDec(nNum) CLASS TMySQLRow @@ -674,7 +674,7 @@ // Char fields are padded with spaces since a real .dbf field would be if ::FieldType(nNum) == "C" - return PadR(Value,::aFieldStruct[nNum][MYSQL_FS_LENGTH]) + return PadR(Value,::aFieldStruct[nNum][MYSQL_FS_MAXLEN]) else return Value endif @@ -687,7 +687,7 @@ METHOD FieldLen(nNum) CLASS TMySQLQuery if nNum >=1 .AND. nNum <= Len(::aFieldStruct) - return ::aFieldStruct[nNum][MYSQL_FS_LENGTH] + return ::aFieldStruct[nNum][MYSQL_FS_MAXLEN] endif return 0 -------------------------------------------- Have no idea if this patch is correct or not. Chen. _______________________________________________ Harbour mailing list [email protected] http://lists.harbour-project.org/mailman/listinfo/harbour
