Pagina 1 di 1

Errore Mysql dopo migrazione a php 8.1

Inviato: 11 lug 2023, 07:19
da magre66
Buongiorno a tutti,
sto testando la versione SC con php 8.1. Non ho riscontrato particolari problemi nella migrazione dei progetti realizzati con il 7.3 tramme questo che però impatta molto:
Ho uno script che importa un file csv in una tabella. Per logiche legate al server MySql non uso LOAD INFILE ma leggo il file, lo inserisco in un array e poi costruisco la INSERT che funziona correttamente se la eseguo manualmente con Workbench e nell'ambiente con php 7.3. In quello con 8.1 invece mi restituisce il seguente errore: "2014: Cannot execute queries while there are pending result sets. Consider unsetting the previous PDOStatement or calling PDOStatement::closeCursor()"
Ovviamente non ci sono query in sospeso e l'errore si verifica anche inserendo una sola riga quindi non è legato alla lunghezza del file
Qualcouno ha avuto lo stesso problema e magari lo ha risolto?

Grazie in anticipo per le risposte

Re: Errore Mysql dopo migrazione a php 8.1

Inviato: 11 lug 2023, 08:10
da Fabio
Buogiorno,
non sembra un errore comune a tutti gli utenti Scriptcase.
In ogni caso senza vedere il codice è difficile fare delle ipotesi.

Re: Errore Mysql dopo migrazione a php 8.1

Inviato: 11 lug 2023, 09:11
da magre66
Grazie Fabio,
ecco il codice.
Anch'io sto pensando che siano una serie di concause, ma nei vari log sia di apache, sia di mysql non trovo nulla di anomalo. Il server di test è clone di quello di produzione solo con il php 8.1 invece del 7.3. La query risultante lanciata singolarmente funziona per cui l'ultima discriminante resta sc.
Nei vari post su internet trovo riferimenti che dicono di passare la funzione closeCursor() alla connessione PDO ma non so come fare in sc.

Codice: Seleziona tutto

$dbnm=[sc_glo_db];

$sql="TRUNCATE TABLE $dbnm.import_arco_tmp;";
sc_exec_sql($sql, "conn_mysql");

$sq="ALTER TABLE $dbnm.import_arco_tmp AUTO_INCREMENT = 2;";
sc_exec_sql($sql, "conn_mysql");

$val='';

$ph = $this->Ini->path_doc;

$CSVfile = $ph.'/'.[nomefile];

$handler = fopen($CSVfile, 'r');

fgets($handler); 

while($data = fgetcsv($handler,0,';','"')) {
	$valori[] ="('". implode("','", str_replace("'","\'",$data))."')";
}

fclose($handler);

$val =implode(",",$valori);

$sql="INSERT INTO $dbnm.import_arco_tmp
(NUM_DOC, DT_FATT, BOLLA, DAT_BOLL, TIP_TRAS, RIF_CLI, RIF2CLI, COD_PART, COD_IPAR, COD_ARR, COD_IARR, CLIENTE, RAG_MIT, CAP_MIT, LOC_MIT, PROV_MIT, NAZ_MIT, RAG_DES, CAP_DES, LOC_DES, PROV_DES, NAZ_DES, NUM_COLL, TOT_VOL, TOT_PESO, BASE_TASS, COD_IVA, TOT_IMPO, TOT_IVA, TOT_SPED, IMP_DIFIS, IMP_NOLO, IMP_ADGES, IMP_ASSIC, IMP_FUEL, IMP_DIASS, IMP_GIACE, IMP_ISTAT, COD_VAR1, IMP_VAR1, COD_VAR2, IMP_VAR2, COD_VAR3, IMP_VAR3, COD_VAR4, IMP_VAR4, COD_VAR5, IMP_VAR5, COD_VAR6, IMP_VAR6, COD_VAR7, IMP_VAR7, COD_VAR8, IMP_VAR8, COD_VAR9, IMP_VAR9, COD_VA10, IMP_VA10, COD_VA11, IMP_VA11, COD_VA12, IMP_VA12, COD_VA13, IMP_VA13, COD_VA14, IMP_VA14, COD_VA15, IMP_VA15) VALUES".$val.";";

sc_exec_sql($sql, "conn_mysql");

Re: Errore Mysql dopo migrazione a php 8.1

Inviato: 11 lug 2023, 20:54
da Fabio
Ciao,
il nome della variabile nel metodo sc_exec_sql è errato: prova a sostituirlo con $sq, o viceversa cambia il nome della variabile in $sql.
$sq="ALTER TABLE $dbnm.import_arco_tmp AUTO_INCREMENT = 2;";
sc_exec_sql($sql, "conn_mysql");

Re: Errore Mysql dopo migrazione a php 8.1

Inviato: 14 lug 2023, 07:22
da magre66
Ciao Fabio,
grazie è stata una svista che però non cambia il risultato nel senso che con l'errore non esegue l'ALTER TABLE ma esegue due volte il TRUNCATE per cui al massimo mi troverei un id incrementale ad ogni importazione invece che riparte da 2 ogni volta.
Credo di essere incappato in una di quelle anomalie inspiegabili. Nel week end provo a rifare il server e reinstallare da zero

Re: Errore Mysql dopo migrazione a php 8.1

Inviato: 16 lug 2023, 10:10
da magre66
[risolto]
Ho rifatto il server e adesso funziona... Lo metto nella collezione dei misteri ...
Scusate se ho aperto un post che in realtà non c'entrava

Re: Errore Mysql dopo migrazione a php 8.1

Inviato: 17 lug 2023, 12:41
da Lorenzo1975
Ciao a tutti
Ho un problema simile, quando inserisco una masco sc_select in una funzione php ottengo questo errore:
Fatal error: Uncaught TypeError: mysqli_close()" più altri riferimenti ai file php.
Mi succede nelle applicazioni Dialog dopo che ho effettuato il submit.
La query funziona correttamente ma mi appare comunque questo errore.
Ho provato anche a inserire il codice proposto per sc_select negli esempi a fianco della finestra del codice, non ho nemmeno cambiato la stringa della query e non ho nemmeno effettuato la chiamata alla funzione in nessuna parte del codice dell'applicazione.
Quanto effettuato il submit boom mi salta fuori l'errore nel footer.
Questo succede da quando sono migrato a 8.1.
Potete aiutarmi, fra 20 giorni quando scade la prova dell'8.1 devo abbandonare il vecchio 7.3 funzionante!

Re: Errore Mysql dopo migrazione a php 8.1

Inviato: 18 lug 2023, 18:58
da Lorenzo1975
Ho risolto il problema cancellandolo la connessione e riconfigurandola.