SQLite has two kinds of tables (since 2022): normal ones and STRICT ones. With normal tables, the data type of the fields is mostly treated like a recommendation, but the value is probably stored in a field of type: 'any'. With STRICT tables, you have the following types: 'integer', 'real', 'text', 'blob' and 'any'. No length or size, no encoding, no range. But there is conversion going on between those in the background.
If you specify other data types, this can result in strange errors, that are hard to track down. The database engine and the FPC implementation try to guess what datatype it is, what you want to do with it and which conversions have to take place. If you specify unsupported data types and/or expect different things than can be delivered, weird things happen, which results in strange errors.