provinciadicremona / AVCP-Xml

Generatore di dataset XML per l'ANAC - art. 1 comma 32 L. 190/2012
GNU General Public License v3.0
12 stars 8 forks source link

Errore durante aggiornamento 0.7.2 > 0.8.8 #21

Closed dgardina closed 4 years ago

dgardina commented 4 years ago

Buongiorno, seguendo la procedura di aggiornamento per passare direttamente dalla versione 0.7.2 alla 0.8.8 al momento di aggiornare la pagina indice viene restituito questo errore: "Errore nella DROP di updateViewDitte. Aggiornamento fallito!" Se premo ancora "F5" arrivo alla schermata di login, ma ho la sensazione che qualcosa in effetti non venga aggiornato/modificato (ad esempio nell'elenco ditte risulta il numero di lotti a cui hanno partecipato ma nella colonna "Aggiudica" c'è sempre scritto "nessuna". Inoltre la validazione dell'XML restituisce errori per tutti i lotti inseriti: Error 1840: Element 'sceltaContraente': [facet 'enumeration'] The value '23-AFFIDAMENTO IN ECONOMIA - AFFIDAMENTO DIRETTO' is not an element of the set ... oppure Error 1824: Element 'sceltaContraente': '23-AFFIDAMENTO IN ECONOMIA - AFFIDAMENTO DIRETTO' is not a valid value of the atomic type '{legge190_1_0}sceltaContraenteType'

dgardina commented 4 years ago

Un'altra istanza mi ha segnalato il corretto completamento dell'aggiornamento ma la validazione dà errori di questo tipo:

Error 1832: Element 'oggetto': [facet 'maxLength'] The value has a length of '253'; this exceeds the allowed maximum length of '250'. Vedi alla linea 5374

Error 1824: Element 'oggetto': 'Determina a contrarre, mediante Trattativa Diretta n. xxxxx sul Mepa, per la fornitura del servizio triennale online denominato “Ufficiocommercio.it” richiesto dalla Sezione Amministrativa Commercio - smartCIG xxxxxxxxxx' is not a valid value of the atomic type '{legge190_1_0}oggettoType'. Vedi alla linea 5374

(al posto di "xxxxx" i corretti valori)

ProvinciaCremona commented 4 years ago

Ok, l'oggetto non può contenere più di 250 caratteri, la form sega al 250esimo e il campo nel db è di 250 caratteri. Può essere che sia stato inserito durante un'importazione ma resta il problema di come abbiano fatto ad infilarne 253 in uno spazio che ne contiene 250. L'unica possibilità che mi viene in mente è che alcuni caratteri speciali all'interno dell'oggetto siano multibyte e che una volta "stampati" nell'xml si "espandano".

Innanzitutto consiglierei al titolare dei dati di rimuovere i caratteri speciali e di sostituirli con normali virgolette. Fatto questo l'errore dovrebbe scomparire; successivamente mi piacerebbe vedere se limitare i caratteri nel momento della scrittura dell'xml risolve veramente il problema (che in teoria dovrebbe essere già risolto al momento dell'inserimento nel db...).

Però provi a chiedergli come hanno fatto gli inserimenti e che sistema operativo usano, perché il programma converte gli input anche dai charset di windows....


Claudio Roncaglio Ufficio per le Relazioni con il Pubblico della Provincia di Cremona C.so Vittorio Emanuele II,17 tel. +39 0372 406247 fax +39 0372 406301

----- Messaggio originale ----- Da: "Diego Gardina" notifications@github.com A: "provinciadicremona" AVCP-Xml@noreply.github.com Cc: "Subscribed" subscribed@noreply.github.com Inviato: Martedì, 10 dicembre 2019 9:46:49 Oggetto: Re: [provinciadicremona/AVCP-Xml] Errore durante aggiornamento 0.7.2 > 0.8.8 (#21)

Un'altra istanza mi ha segnalato il corretto completamento dell'aggiornamento ma la validazione dà errori di questo tipo:

Error 1832: Element 'oggetto': [facet 'maxLength'] The value has a length of '253'; this exceeds the allowed maximum length of '250'. Vedi alla linea 5374

Error 1824: Element 'oggetto': 'Determina a contrarre, mediante Trattativa Diretta n. xxxxx sul Mepa, per la fornitura del servizio triennale online denominato “Ufficiocommercio.it” richiesto dalla Sezione Amministrativa Commercio - smartCIG xxxxxxxxxx' is not a valid value of the atomic type '{legge190_1_0}oggettoType'. Vedi alla linea 5374

(al posto di "xxxxx" i corretti valori)

--

You are receiving this because you are subscribed to this thread.

Reply to this email directly or view it on GitHub:

https://github.com/provinciadicremona/AVCP-Xml/issues/21#issuecomment-563929354

dgardina commented 4 years ago

Ok, l'oggetto non può contenere più di 250 caratteri, la form sega al 250esimo e il campo nel db è di 250 caratteri. Può essere che sia stato inserito durante un'importazione ma resta il problema di come abbiano fatto ad infilarne 253 in uno spazio che ne contiene 250. L'unica possibilità che mi viene in mente è che alcuni caratteri speciali all'interno dell'oggetto siano multibyte e che una volta "stampati" nell'xml si "espandano". Innanzitutto consiglierei al titolare dei dati di rimuovere i caratteri speciali e di sostituirli con normali virgolette. Fatto questo l'errore dovrebbe scomparire; successivamente mi piacerebbe vedere se limitare i caratteri nel momento della scrittura dell'xml risolve veramente il problema (che in teoria dovrebbe essere già risolto al momento dell'inserimento nel db...). Però provi a chiedergli come hanno fatto gli inserimenti e che sistema operativo usano, perché il programma converte gli input anche dai charset di windows....

OK, questo per l'errore 1832, in effetti il valore di quel campo specifico era lungo 266 caratteri, probabilmente le virgolette prima e dopo Ufficiocommercio.it si sono "espanse" come dicevi tu... Proverò magari a fare un export del DB in altro modo (questo lo avevo fatto con PHPMyadmin, provo col MySql Workbench) per vedere se ho più fortuna.

Gli altri errori invece? parla di "atomic type" come se si dovessero scegliere i valori da una lista..

dgardina commented 4 years ago

Ho riprovato con un dump dal Workbench ma con stesso esito.. Prima dell'update la validazione dà questi errori, immagino per gli spazi (ho nascosto le lettere del CF).

Error 1839: Element 'codiceFiscale': [facet 'pattern'] The value 'xxx xxx xxxxx H620Q' is not accepted by the pattern '[0-9]{11,11}'. Vedi alla linea 20131 Error 1824: Element 'codiceFiscale': 'xxx xxx xxxxxx H620Q' is not a valid value of the atomic type '{legge190_1_0}codiceFiscaleType'. Vedi alla linea 20131

Dopo l'aggiornamento i primi messaggi sono questi (che prima non venivano fuori, anche dopo aver reimportato il dump in un nuovo DB vuoto):

Error 1832: Element 'oggetto': [facet 'maxLength'] The value has a length of '253'; this exceeds the allowed maximum length of '250'. Vedi alla linea 5374 Error 1824: Element 'oggetto': 'Determina a contrarre, mediante Trattativa Diretta n. XXXXXX sul Mepa, per la fornitura del servizio triennale online della XXXXXXXX SpA denominato “Ufficiocommercio.it” richiesto dalla Sezione Amministrativa Commercio - smartCIG ZXXXXXXXXX' is not a valid value of the atomic type '{legge190_1_0}oggettoType'. Vedi alla linea 5374

Gli errori relativi al codice fiscale permangono ma sono molte righe più giù (circa a metà della pagina di validazione)

dgardina commented 4 years ago

Se può essere utile la configurazione del server in uso è:

ProvinciaCremona commented 4 years ago

Per quel che riguarda il codice fiscale, se contiene degli spazi allora non è nel formato valido. Se non li contiene, provi a controllare che sia corretto con il servizio dell'agenzia delle entrate: https://telematici.agenziaentrate.gov.it/VerificaCF/Scegli.do?parameter=verificaCf Però è strano che sia nel db, perché il programma in fase di inserimento ne verifica la correttezza.

Per quel che riguarda l'oggetto, penso che l'unica alternativa sia di modificarlo manualmente o attraverso una query. Se l'inserimento dei dati non è stato fatto attraverso l'importazione o le maschere però, allora ha bypassato tutti i controlli.

Spero che riesca a risolvere.


Claudio Roncaglio Ufficio per le Relazioni con il Pubblico della Provincia di Cremona C.so Vittorio Emanuele II,17 tel. +39 0372 406247 fax +39 0372 406301

----- Messaggio originale ----- Da: "Diego Gardina" notifications@github.com A: "provinciadicremona" AVCP-Xml@noreply.github.com Cc: "ProvinciaCremona" github@provincia.cremona.it, "Comment" comment@noreply.github.com Inviato: Martedì, 10 dicembre 2019 10:45:52 Oggetto: Re: [provinciadicremona/AVCP-Xml] Errore durante aggiornamento 0.7.2 > 0.8.8 (#21)

Ho riprovato con un dump dal Workbench ma con stesso esito..

Prima dell'update la validazione dà questi errori, immagino per gli spazi (ho nascosto le lettere del CF).

Error 1839: Element 'codiceFiscale': [facet 'pattern'] The value 'xxx xxx xxxxx H620Q' is not accepted by the pattern '[0-9]{11,11}'. Vedi alla linea 20131

Error 1824: Element 'codiceFiscale': 'xxx xxx xxxxxx H620Q' is not a valid value of the atomic type '{legge190_1_0}codiceFiscaleType'. Vedi alla linea 20131

Dopo l'aggiornamento i primi messaggi sono questi (che prima non venivano fuori, anche dopo aver reimportato il dump in un nuovo DB vuoto):

Error 1832: Element 'oggetto': [facet 'maxLength'] The value has a length of '253'; this exceeds the allowed maximum length of '250'. Vedi alla linea 5374

Error 1824: Element 'oggetto': 'Determina a contrarre, mediante Trattativa Diretta n. XXXXXX sul Mepa, per la fornitura del servizio triennale online della XXXXXXXX SpA denominato “Ufficiocommercio.it” richiesto dalla Sezione Amministrativa Commercio - smartCIG ZXXXXXXXXX' is not a valid value of the atomic type '{legge190_1_0}oggettoType'. Vedi alla linea 5374

--

You are receiving this because you commented.

Reply to this email directly or view it on GitHub:

https://github.com/provinciadicremona/AVCP-Xml/issues/21#issuecomment-563952172

dgardina commented 4 years ago

Per oggetto e CF proverò a risolvere in qualche modo (proverò a fare un replace massivo dei caratteri speciali prima di importarli)... Per gli aggiornamenti che non vanno a buon fine (https://github.com/provinciadicremona/AVCP-Xml/issues/21#issue-535575318) invece ha qualche idea di soluzione?

ClaudioRoncaglio commented 4 years ago

Strano, è una semplice DROP e ho appena verificato che funziona... Domani mattina proverò a fare qualche prova.

Il giorno mar 10 dic 2019 alle ore 09:37 Diego Gardina < notifications@github.com> ha scritto:

Buongiorno, seguendo la procedura di aggiornamento per passare direttamente dalla versione 0.7.2 alla 0.8.8 al momento di aggiornare la pagina indice viene restituito questo errore: "Errore nella DROP di updateViewDitte. Aggiornamento fallito!" Se premo ancora "F5" arrivo alla schermata di login, ma ho la sensazione che qualcosa in effetti non venga aggiornato/modificato (ad esempio nell'elenco ditte risulta il numero di lotti a cui hanno partecipato ma nella colonna "Aggiudica" c'è sempre scritto "nessuna". Inoltre la validazione dell'XML restituisce errori per tutti i lotti inseriti: Error 1840: Element 'sceltaContraente': [facet 'enumeration'] The value '23-AFFIDAMENTO IN ECONOMIA - AFFIDAMENTO DIRETTO' is not an element of the set ... oppure Error 1824: Element 'sceltaContraente': '23-AFFIDAMENTO IN ECONOMIA - AFFIDAMENTO DIRETTO' is not a valid value of the atomic type '{legge190_1_0}sceltaContraenteType'

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/provinciadicremona/AVCP-Xml/issues/21?email_source=notifications&email_token=AEGBJLAGBMQG3FPIX4W33DTQX5INDA5CNFSM4JY2ULO2YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4H7MHMLA, or unsubscribe https://github.com/notifications/unsubscribe-auth/AEGBJLBED2M72HM7PTBUKELQX5INDANCNFSM4JY2ULOQ .

--

Claudio Roncaglio

dgardina commented 4 years ago

In effetti lanciando manualmente il DROP e il successivo CREATE VIEW presenti in checkDBUpdate.php funzionano senza problemi... Sembra comunque che gli script presenti in questo file non vengano eseguiti correttamente.. forse qualche incompatibilità con MySQL 8..?

dgardina commented 4 years ago

Ho provato anche su un altro server (Apache 2.4.41, PHP 7.3.11, MySQL 8.0.18) e dà lo stesso problema. "Errore nella DROP di updateViewDitte. Aggiornamento fallito!" nella schermata di login e tabelle/viste non aggiornate.

ClaudioRoncaglio commented 4 years ago

In effetti lanciando manualmente il DROP e il successivo CREATE VIEW presenti in checkDBUpdate.php funzionano senza problemi... Sembra comunque che gli script presenti in questo file non vengano eseguiti correttamente.. forse qualche incompatibilità con MySQL 8..?

Mi viene il dubbio che possa aver ragione a sospettare di MySQL 8... domani mattina provo ad indagare se hanno cambiato qualcosa nelle DROP IF EXISTS, qualcosa che per esempio restituisce false se non trova la view.

Nel peggiore dei casi tolgo i controlli sull'esecuzione di quelle query.

ClaudioRoncaglio commented 4 years ago

Ieri sera mentre passeggiavo col cane mi è venuto in mente che forse la radice di tutti i problemi di aggiornamento è che l'utente mysql che usa il programma non ha i permessi per fare una drop. Provi a dare GRANT ALL sul db di avcp per quell'utente e vediamo cosa succede.

dgardina commented 4 years ago

Buongiorno Claudio.. Mi dispiace di aver rovinato la serenità della tua serata.. :-( purtroppo comunque non ho buone notizie, anche abilitando il GRANT per l'utente non ci sono stati miglioramenti..

ClaudioRoncaglio commented 4 years ago

Non ha rovinato niente, mi è proprio venuto in mente casualmente. Comunque, preferirei togliermi ogni dubbio riguardo ai permessi perché guardando la documentazione di MySQL 8 non ho trovato nessuna modifica riguardo alle operazioni di DROP. Se se la sente le chiederei di provare a lanciare la query che non viene eseguita (DROP VIEW IF EXISTS avcp_vista_ditte) dal suo programma di gestione dei db, ma loggandosi con l'utente MySQL utilizzato dal programma avcp e non con l'amministratore.

Se la query funziona, posso spostare la mia attenzione al codice PHP. A questo proposito, può già testare una modifica che ho fatto ai controlli sulle DROP che ho inserito nel file app/ccheckUpdate.php del branch dev. Le basta sostituire questo file ad una installazione 0.8.8.

Speriamo di risolvere!

dgardina commented 4 years ago

Ho fatto la prova e la query non funziona. Restituisce questo errore: Error Code: 1227. Access denied; you need (at least one of) the SYSTEM_USER privilege(s) for this operation. Ho controllato di nuovo i permessi dell'utente e ha TUTTE le abilitazioni per lo schema, GRANT OPTION compresa.. Negli "Administrative Roles", invece, non ha alcuna abilitazione, visto che è un utente "limitato" al solo scopo di operare su quello specifico schema..

dgardina commented 4 years ago

Se può essere utile ho trovato questa documentazione: https://mysqlserverteam.com/the-system_user-dynamic-privilege/ https://stackoverflow.com/questions/11946012/how-to-add-super-privileges-to-mysql-database

ClaudioRoncaglio commented 4 years ago

OK. Per la soluzione al suo problema il secondo link, quello a stackoverflow, dovrebbe andare bene ma ha il difetto di dare all'utente i privilegi su tutto. Prima di usarla proverei a verificare che i grant e i permessi dell'utente siano adeguati. Se accede come amministratore al db mysql, nella tabella user può vedere tutte le abilitazioni che l'utente avcp ha sul db interessato. Potrebbe bastare modificarle da qui. In ogni caso, dopo aver modificato i privilegi dell'utente si ricordi di lanciare: FLUSH PRIVILEGES; altrimenti le modifiche non saranno utilizzabili.

ClaudioRoncaglio commented 4 years ago

Niente, allora deve dargli per forza concedere il SUPER all'utente. Un mio collega mi fa presente che questa situazione potrebbe essere causata dal fatto che l'utente che ha creato e popolato il db avesse questo privilegio, ma questo lo può sapere solo lei.

dgardina commented 4 years ago

Ho provato a reimportare il db originario con l'utente "non-amministratore".. Ha creato e popolato le tabelle, ma NON le viste... stesso errore. A questo punto darò i permessi all'utente, giusto il tempo di fare le operazioni e poi li tolgo..

dgardina commented 4 years ago

OK, facendo diventare l'utente amministratore (pari a "root") è andato tutto liscio..

Una ulteriore nota: le query di update nella funzione updateLottiSceltaContraente vanno a cambiare tutti i valori del campo "sceltaContraente", compresi quelli dei lotti degli anni passati.. Forse sarebbe più opportuno indicare una ulteriore clausola nel WHERE, ovvero "anno=2019 AND .....", non trova?

ClaudioRoncaglio commented 4 years ago

Ci avevo pensato ma gli xml generati non sarebbero stati comunque conformi. Le comunicazioni degli anni passati sono state inviate, quindi ai fini della rilevazione non cambia nulla.

dgardina commented 4 years ago

Giusto.. Posso procedere così allora? Cambio (temporaneamente) i privilegi dell'utente ed eseguo i passaggi previsti, dopodiché lo riporto a utente "standard" per le normali operazioni sul DB.. sperando riesca a inserire/modificare/cancellare i dati (credo di sì, il problema sembra essere solo sulle viste)

ClaudioRoncaglio commented 4 years ago

Secondo me sì, però non sono un amministratore di database espertissimo :smile:

dgardina commented 4 years ago

Ottimo.. Grazie Claudio, come sempre gentilissimo e disponibile. Ci aggiorniamo in caso di ulteriori problemi (speriamo di no! ;-) )