ColdFusion – Errore campi CLOB su Oracle


Sviluppando un applicativo web per la posta sono incappato nei famosissimi campi LOB di Oracle che oltre ad essere abbastanz antipatici nella gestione sono di fatto interfacciati male con ColdFusion.
All’inizio pernsavo che il tag CFPOP non si prestasse bene all’opera di download degli allegati, infatti mi ritrovavo con le immagini tagliate, i file in excel corrotti ed i file zippati illeggibili. Avevo notato che la dimensione dei file scritti sul DB era di 48.000 bytes e poi una serie di zero fino al raggiungimento della dimensione reale del file, supponevo quindi che l’errore fosse relativo al tag CFPOP e vedendo che molti avevano sostituito questo tag con un CFX_POP3 oramai famosissimo mi sono fatto i miei viaggi.

Niente di più sbagliato, di fatto il CFPOP gestisce bene gli allegati, è un po’ lento ma il suo lavoro lo fa, il problema era nel comando SQL inizialmente, non utilizzavo il specificando il cfsqltype=”CF_SQL_CLOB” il che generava un errore del tipo stringa troppo lunga nonostante il campo CLOB fosse lungo al massimo 4Gb.

Una volta utilizzato il cfqueryparam con i suoi parametri tutti giusti, l’errore era un’altro: stringa non valida, purtroppo per i campi CLOB si deve passare necessariamente una stringa rielaborata, per fare ciò ho utilizzato il toBase64(variabile) per scrivere ed il relativo toBinary(variabile) per la lettura.

Nonostante tutti i miei sbattimenti l’errore persiste, le immagini vengono tagliate ed il campo CLOB è sempre lungo 48.000.

In conclusione sul sito di Macromedia ad oggi Adobe ho trovato questo:

Strings – Strings can be any length, limited by the amount of available memory on the ColdFusion server. However, the default size limit for long text retrieval (CLOB) is 64K. The ColdFusion MX Administrator lets you increase the limit for database string transfers, but doing so can reduce server performance. To change the limit, select the Enable retrieval of long text option on the Advanced Settings page for the data source.

Eccolo lì, basta andare in amministrazione, selezionare il nostro datasource andare in avanzate e mettere la spunta su “Enable retrieval of long text” salvare e via.
Il problema non c’è più, non so ancora dire quanto influisce sulle prestazioni, sarà comunque difficile da dire fino a chè l’applicativo rimane in ambiente di sviluppo.

Con un piccolo test ho inserito un filmato di 500 Mb circa, il filmato c’è tutto è solo lento a leggere/scrivere quell’informazione.

ColdFusion – Errore campi CLOB su Oracle ultima modifica: 2006-05-09T00:00:00+00:00 da Enrico

Comments are closed.