Mi trovo a dare supporto ad un collega che sta lavorando ad un'applicazione presa in gestione da un altro collega.
Applicazione semplice, di inserimento e modifica dati su database mysql mediante interfaccia web, sviluppata con java e Hibernate. Un banale CRUD per farla breve.
Il database contiene già svariati record e stiamo guardando la parte di modifica dati.
Una tabella in particolare contiene un campo che è stato chiamato "interval".
Passiamo qualche ora tra esperimenti e debugger inseguendo degli stani errori per scoprire alla fine che:
Detta così sembra un problema semplice e banale ma in questi casi pensi a tutto ma non ad una cosa del genere. Inoltre mi aspetterei direttamente di non poter creare la tabella piuttosto che crearla, inserire i dati e avere problemi a posteriori.
Ad ogni modo, un'informazione in più da tenere a mente.
Il database contiene già svariati record e stiamo guardando la parte di modifica dati.
Una tabella in particolare contiene un campo che è stato chiamato "interval".
Passiamo qualche ora tra esperimenti e debugger inseguendo degli stani errori per scoprire alla fine che:
- interval è una parola riservata di mysql e crea problemi ovviamente all'interno delle query, specie se di tipo "update ... set interval = X ...". Questa la pagina ufficiale.
- mysql non lancia errori in fase di creazione della tabella
- mysql non lancia errori in fase di inserimento dati, forse perché sfortunatamente è stata usata la clausola di insert con l'elenco implicito dei campi quindi di fatto la parola "interval" non è stata usata, “insert into table (x,y,z,t)” invece che “insert into table (lista_campi) values (lista_valori)”.
- Hibernate, come anche la riga di comando mysql, lancia un errore di sintassi SQL se provo a lanciare una update.
- dalla riga di comando mysql riesco a non avere errori se mi riferisco al nome campo usando la notazione con anteposto il nome della tabella.
Detta così sembra un problema semplice e banale ma in questi casi pensi a tutto ma non ad una cosa del genere. Inoltre mi aspetterei direttamente di non poter creare la tabella piuttosto che crearla, inserire i dati e avere problemi a posteriori.
Ad ogni modo, un'informazione in più da tenere a mente.
Nessun commento:
Posta un commento