Errore Mysql dopo migrazione a php 8.1

Raccoglitore di domande e risposte relative a ScriptCase, il generatore di codice php per lo sviluppo rapido di applicazioni.
Regole del forum
Nel forum è vietato fare pubblicità senza avere l'autorizzazione dello staf di Netspecial.
Rispondi
magre66
Messaggi: 39
Iscritto il: 14 mar 2017, 08:04

Errore Mysql dopo migrazione a php 8.1

Messaggio da magre66 » 11 lug 2023, 07:19

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

Fabio
Messaggi: 440
Iscritto il: 20 feb 2014, 11:43

Re: Errore Mysql dopo migrazione a php 8.1

Messaggio da Fabio » 11 lug 2023, 08:10

Buogiorno,
non sembra un errore comune a tutti gli utenti Scriptcase.
In ogni caso senza vedere il codice è difficile fare delle ipotesi.

magre66
Messaggi: 39
Iscritto il: 14 mar 2017, 08:04

Re: Errore Mysql dopo migrazione a php 8.1

Messaggio da magre66 » 11 lug 2023, 09:11

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");

Fabio
Messaggi: 440
Iscritto il: 20 feb 2014, 11:43

Re: Errore Mysql dopo migrazione a php 8.1

Messaggio da Fabio » 11 lug 2023, 20:54

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");

magre66
Messaggi: 39
Iscritto il: 14 mar 2017, 08:04

Re: Errore Mysql dopo migrazione a php 8.1

Messaggio da magre66 » 14 lug 2023, 07:22

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

magre66
Messaggi: 39
Iscritto il: 14 mar 2017, 08:04

Re: Errore Mysql dopo migrazione a php 8.1

Messaggio da magre66 » 16 lug 2023, 10:10

[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

Lorenzo1975
Messaggi: 10
Iscritto il: 07 apr 2020, 12:08

Re: Errore Mysql dopo migrazione a php 8.1

Messaggio da Lorenzo1975 » 17 lug 2023, 12:41

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!

Lorenzo1975
Messaggi: 10
Iscritto il: 07 apr 2020, 12:08

Re: Errore Mysql dopo migrazione a php 8.1

Messaggio da Lorenzo1975 » 18 lug 2023, 18:58

Ho risolto il problema cancellandolo la connessione e riconfigurandola.

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti