I think I've found something but still confused too.
Starting from the begin, my environment is:
mysql (innodb_version) 5.6.28
zeoslib 7.1.4
Different from yours but trouble I think is in FPC, cause I use Lazarus trunk wich uses FPC 3 instead of Lazarus 1.2.6 wich uses fpc 2.6.4.
In .../fpc/packages/fcl-db/src/base/db.pas there no changes: order is not changed, ftBlob = 15 in both cases
db.pas in fpc 2.6.4
Code: Select all
TFieldType = (ftUnknown, ftString, ftSmallint, ftInteger, ftWord,
ftBoolean, ftFloat, ftCurrency, ftBCD, ftDate, ftTime, ftDateTime,
ftBytes, ftVarBytes, ftAutoInc, ftBlob, ftMemo, ftGraphic, ftFmtMemo,
ftParadoxOle, ftDBaseOle, ftTypedBinary, ftCursor, ftFixedChar,
ftWideString, ftLargeint, ftADT, ftArray, ftReference,
ftDataSet, ftOraBlob, ftOraClob, ftVariant, ftInterface,
ftIDispatch, ftGuid, ftTimeStamp, ftFMTBcd, ftFixedWideChar, ftWideMemo);
db.pas in fpc 3.0
Code: Select all
TFieldType = (ftUnknown, ftString, ftSmallint, ftInteger, ftWord,
ftBoolean, ftFloat, ftCurrency, ftBCD, ftDate, ftTime, ftDateTime,
ftBytes, ftVarBytes, ftAutoInc, ftBlob, ftMemo, ftGraphic, ftFmtMemo,
ftParadoxOle, ftDBaseOle, ftTypedBinary, ftCursor, ftFixedChar,
ftWideString, ftLargeint, ftADT, ftArray, ftReference,
ftDataSet, ftOraBlob, ftOraClob, ftVariant, ftInterface,
ftIDispatch, ftGuid, ftTimeStamp, ftFMTBcd, ftFixedWideChar, ftWideMemo);
there's something new in fpc 3, but this shoulnd't break
Code: Select all
{ TBlobField }
TBlobStreamMode = (bmRead, bmWrite, bmReadWrite);
// This type is needed for compatibility. While it should contain only blob
// types, it actually does not.
// Instead of this, please use ftBlobTypes
TBlobType = ftBlob..ftWideMemo deprecated 'Warning: Does not contain BLOB types. Please use ftBlobTypes.';
TBlobField = class(TField)
strange to me is that in unitdatamodule.lfm, SqlCode is defined as ftBlob and not as ftMemo!
I thought about RTTI troubles and I checked in sourceforce, code is following: BlobType = ftBlob.
So, I can't figure out why I get thi error while you don't.
Code: Select all
object TableQueriesSqlCode: TMemoField
DisplayWidth = 10
FieldKind = fkData
FieldName = 'SqlCode'
Index = 3
LookupCache = False
ProviderFlags = [pfInUpdate, pfInWhere]
ReadOnly = False
Required = True
BlobType = ftBlob
Transliterate = False
end
Anyway I fixed that way, it works, but I have not figured out why
![Smile :)](./images/smilies/icon_e_smile.gif)
how is your lfm?
Code: Select all
ftMemo {$IFDEF VER3_0}, ftBlob{$ENDIF}: if aProtocol = Dbms_pgsql then
Result := 'TEXT'
else
Result := 'LONGTEXT';