Reputation: 31
- I checked the similar questions associated but they don't have to do with my problem and none of the answers solve my problem -
I have php script executing a mysql select query to export the database in a xls file, it works fine on my test database with a few rows but on my production database with thousands of rows I get a 500 error, being an heavy query I have on the top of the php script:
ini_set("memory_limit","-1");
ini_set("max_execution_time","0");
I checked the php error log and I found this error on the new PDO
line:
PHP Fatal error: Uncaught PDOException: SQLSTATE[HY000] [2002] No connection could be made because the target machine actively refused it.
I thought the problem could be a timeout in the mysql connection but as you can see from the slow query log the query time of the 2 attempts is different:
# Time: 200617 2:38:54
# User@Host: root[root] @ localhost [127.0.0.1]
# Query_time: 1102.064909 Lock_time: 0.000000 Rows_sent: 0 Rows_examined: 1948765684
SET timestamp=1592354334;
SELECT r.*,t_t.tipo_di_trasporto,
s1.sede s1,s1.ragione_sociale r_s1,s1.indirizzo i1,s1.citta c1,s1.orario o1,s2.sede s2,s2.utente s2_utente,s2.ragione_sociale r_s2,s2.indirizzo i2,s2.citta c2,s2.orario o2,a_s.sede a_s_sede,
c.id collo,c.dimensioni,c.peso,t_c.tipo_di_collo,t.mezzo_di_scarico,
v.id viaggio,tr.trasportatore trasportatore,v.data_ora,v.data_logistica,v.data_consegna,t_t2.tipo_di_trasporto tipo_spedizione,v.prezzo,v.data_completato,v.altro_ritiro,v.altra_destinazione,v.area,
s1_v.sede s1_v,s1_v.utente,s1_v.ragione_sociale r_s1_v,s1_v.indirizzo i1_v,s1_v.citta c1_v,s1_v.orario o1_v,
s2_v.sede s2_v,s2_v.utente,s2_v.ragione_sociale r_s2_v,s2_v.indirizzo i2_v,s2_v.citta c2_v,s2_v.orario o2_v,
CASE WHEN SUBSTRING(w.wbs,1,1) IN('0','1','2','3','4','5','6','7','8','9') THEN SUBSTRING(w.wbs,1,5) WHEN SUBSTRING(w.wbs,1,1)='Z' THEN SUBSTRING(w.wbs,1,7) ELSE SUBSTRING(w.wbs,1,8) END progetto,
u1.utente,u1.codice,SUBSTRING_INDEX(SUBSTRING_INDEX(o_r.ordine,'|',1),'|',-1) ord,u2.utente autorizzata_da,
(SELECT COUNT(DISTINCT c_v1.viaggio) FROM colli_viaggi c_v1 INNER JOIN colli c1 ON c_v1.collo=c1.id WHERE c1.richiesta=r.id) viaggi
FROM richieste r
LEFT JOIN tipi_di_trasporto t_t ON r.tipo_di_trasporto=t_t.id
LEFT JOIN sedi s1 ON r.sede_di_ritiro=s1.id LEFT JOIN sedi s2 ON r.sede_di_destinazione=s2.id LEFT JOIN altre_sedi a_s ON r.altra_sede_di_destinazione=a_s.id
LEFT JOIN ordini_richieste o_r ON r.id=o_r.richiesta
LEFT JOIN ordini o ON SUBSTRING_INDEX(SUBSTRING_INDEX(o_r.ordine,'|',1),'|',-1)=o.numero AND SUBSTRING_INDEX(SUBSTRING_INDEX(o_r.ordine,'|',2),'|',-1)=o.posizione
LEFT JOIN wbs w ON o.wbs=w.id INNER JOIN utenti u1 ON r.utente=u1.id
LEFT JOIN utenti u2 ON r.autorizzata_da=u2.id
INNER JOIN colli c ON r.id=c.richiesta
INNER JOIN tipi_di_collo t_c ON c.tipo_di_collo=t_c.id
INNER JOIN mezzi_di_scarico t ON c.mezzo_di_scarico=t.id
LEFT JOIN colli_viaggi c_v ON c.id=c_v.collo
LEFT JOIN viaggi v ON c_v.viaggio=v.id OR r.id=v.richiesta
LEFT JOIN tipi_di_trasporto t_t2 ON v.tipo_spedizione=t_t2.id
LEFT JOIN trasportatori tr ON v.trasportatore=tr.id
LEFT JOIN sedi s1_v ON v.ritiro=s1_v.id LEFT JOIN sedi s2_v ON v.destinazione=s2_v.id
ORDER BY r.id,c.id,v.id
LIMIT 1000;
# User@Host: root[root] @ localhost [127.0.0.1]
# Query_time: 2040.591130 Lock_time: 0.000000 Rows_sent: 0 Rows_examined: 3948635378
SET timestamp=1592354334;
SELECT r.*,t_t.tipo_di_trasporto,
s1.sede s1,s1.ragione_sociale r_s1,s1.indirizzo i1,s1.citta c1,s1.orario o1,s2.sede s2,s2.utente s2_utente,s2.ragione_sociale r_s2,s2.indirizzo i2,s2.citta c2,s2.orario o2,a_s.sede a_s_sede,
c.id collo,c.dimensioni,c.peso,t_c.tipo_di_collo,t.mezzo_di_scarico,
v.id viaggio,tr.trasportatore trasportatore,v.data_ora,v.data_logistica,v.data_consegna,t_t2.tipo_di_trasporto tipo_spedizione,v.prezzo,v.data_completato,v.altro_ritiro,v.altra_destinazione,v.area,
s1_v.sede s1_v,s1_v.utente,s1_v.ragione_sociale r_s1_v,s1_v.indirizzo i1_v,s1_v.citta c1_v,s1_v.orario o1_v,
s2_v.sede s2_v,s2_v.utente,s2_v.ragione_sociale r_s2_v,s2_v.indirizzo i2_v,s2_v.citta c2_v,s2_v.orario o2_v,
CASE WHEN SUBSTRING(w.wbs,1,1) IN('0','1','2','3','4','5','6','7','8','9') THEN SUBSTRING(w.wbs,1,5) WHEN SUBSTRING(w.wbs,1,1)='Z' THEN SUBSTRING(w.wbs,1,7) ELSE SUBSTRING(w.wbs,1,8) END progetto,
u1.utente,u1.codice,SUBSTRING_INDEX(SUBSTRING_INDEX(o_r.ordine,'|',1),'|',-1) ord,u2.utente autorizzata_da,
(SELECT COUNT(DISTINCT c_v1.viaggio) FROM colli_viaggi c_v1 INNER JOIN colli c1 ON c_v1.collo=c1.id WHERE c1.richiesta=r.id) viaggi
FROM richieste r
LEFT JOIN tipi_di_trasporto t_t ON r.tipo_di_trasporto=t_t.id
LEFT JOIN sedi s1 ON r.sede_di_ritiro=s1.id LEFT JOIN sedi s2 ON r.sede_di_destinazione=s2.id LEFT JOIN altre_sedi a_s ON r.altra_sede_di_destinazione=a_s.id
LEFT JOIN ordini_richieste o_r ON r.id=o_r.richiesta
LEFT JOIN ordini o ON SUBSTRING_INDEX(SUBSTRING_INDEX(o_r.ordine,'|',1),'|',-1)=o.numero AND SUBSTRING_INDEX(SUBSTRING_INDEX(o_r.ordine,'|',2),'|',-1)=o.posizione
LEFT JOIN wbs w ON o.wbs=w.id INNER JOIN utenti u1 ON r.utente=u1.id
LEFT JOIN utenti u2 ON r.autorizzata_da=u2.id
INNER JOIN colli c ON r.id=c.richiesta
INNER JOIN tipi_di_collo t_c ON c.tipo_di_collo=t_c.id
INNER JOIN mezzi_di_scarico t ON c.mezzo_di_scarico=t.id
LEFT JOIN colli_viaggi c_v ON c.id=c_v.collo
LEFT JOIN viaggi v ON c_v.viaggio=v.id OR r.id=v.richiesta
LEFT JOIN tipi_di_trasporto t_t2 ON v.tipo_spedizione=t_t2.id
LEFT JOIN trasportatori tr ON v.trasportatore=tr.id
LEFT JOIN sedi s1_v ON v.ritiro=s1_v.id LEFT JOIN sedi s2_v ON v.destinazione=s2_v.id
ORDER BY r.id,c.id,v.id
LIMIT 1000;
C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqld, Version: 5.5.45-log (MySQL Community Server (GPL)). started with:
TCP Port: 3306, Named Pipe: (null)
Time Id Command Argument
# Time: 200617 3:05:29
# User@Host: root[root] @ localhost [127.0.0.1]
# Query_time: 1002.727926 Lock_time: 0.000000 Rows_sent: 0 Rows_examined: 2041104073
use *hidden*;
SET timestamp=1592355929;
SELECT r.*,t_t.tipo_di_trasporto,
s1.sede s1,s1.ragione_sociale r_s1,s1.indirizzo i1,s1.citta c1,s1.orario o1,s2.sede s2,s2.utente s2_utente,s2.ragione_sociale r_s2,s2.indirizzo i2,s2.citta c2,s2.orario o2,a_s.sede a_s_sede,
c.id collo,c.dimensioni,c.peso,t_c.tipo_di_collo,t.mezzo_di_scarico,
v.id viaggio,tr.trasportatore trasportatore,v.data_ora,v.data_logistica,v.data_consegna,t_t2.tipo_di_trasporto tipo_spedizione,v.prezzo,v.data_completato,v.altro_ritiro,v.altra_destinazione,v.area,
s1_v.sede s1_v,s1_v.utente,s1_v.ragione_sociale r_s1_v,s1_v.indirizzo i1_v,s1_v.citta c1_v,s1_v.orario o1_v,
s2_v.sede s2_v,s2_v.utente,s2_v.ragione_sociale r_s2_v,s2_v.indirizzo i2_v,s2_v.citta c2_v,s2_v.orario o2_v,
CASE WHEN SUBSTRING(w.wbs,1,1) IN('0','1','2','3','4','5','6','7','8','9') THEN SUBSTRING(w.wbs,1,5) WHEN SUBSTRING(w.wbs,1,1)='Z' THEN SUBSTRING(w.wbs,1,7) ELSE SUBSTRING(w.wbs,1,8) END progetto,
u1.utente,u1.codice,SUBSTRING_INDEX(SUBSTRING_INDEX(o_r.ordine,'|',1),'|',-1) ord,u2.utente autorizzata_da,
(SELECT COUNT(DISTINCT c_v1.viaggio) FROM colli_viaggi c_v1 INNER JOIN colli c1 ON c_v1.collo=c1.id WHERE c1.richiesta=r.id) viaggi
FROM richieste r
LEFT JOIN tipi_di_trasporto t_t ON r.tipo_di_trasporto=t_t.id
LEFT JOIN sedi s1 ON r.sede_di_ritiro=s1.id LEFT JOIN sedi s2 ON r.sede_di_destinazione=s2.id LEFT JOIN altre_sedi a_s ON r.altra_sede_di_destinazione=a_s.id
LEFT JOIN ordini_richieste o_r ON r.id=o_r.richiesta
LEFT JOIN ordini o ON SUBSTRING_INDEX(SUBSTRING_INDEX(o_r.ordine,'|',1),'|',-1)=o.numero AND SUBSTRING_INDEX(SUBSTRING_INDEX(o_r.ordine,'|',2),'|',-1)=o.posizione
LEFT JOIN wbs w ON o.wbs=w.id INNER JOIN utenti u1 ON r.utente=u1.id
LEFT JOIN utenti u2 ON r.autorizzata_da=u2.id
INNER JOIN colli c ON r.id=c.richiesta
INNER JOIN tipi_di_collo t_c ON c.tipo_di_collo=t_c.id
INNER JOIN mezzi_di_scarico t ON c.mezzo_di_scarico=t.id
LEFT JOIN colli_viaggi c_v ON c.id=c_v.collo
LEFT JOIN viaggi v ON c_v.viaggio=v.id OR r.id=v.richiesta
LEFT JOIN tipi_di_trasporto t_t2 ON v.tipo_spedizione=t_t2.id
LEFT JOIN trasportatori tr ON v.trasportatore=tr.id
LEFT JOIN sedi s1_v ON v.ritiro=s1_v.id LEFT JOIN sedi s2_v ON v.destinazione=s2_v.id
ORDER BY r.id,c.id,v.id
LIMIT 1;
C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqld, Version: 5.5.45-log (MySQL Community Server (GPL)). started with:
TCP Port: 3306, Named Pipe: (null)
Time Id Command Argument
Upvotes: 0
Views: 51