Cancellazione PG in Gdrcd 5.x
13/06/2020 07:26:08 e modificato da gdr-online.com il 20/06/2021 11:40:44
greatseiji ha scritto:
A sto punto mi viene da pensare che sia proprio un errore del pacchetto base del gdrcd.
Gdrcd è una open source strapiena di bug. Noi abbiamo messo mano nel 2019 e nel 2020 stiamo ancora risolvendo un'altra parte. Se hai in problema di cancellazioni impossibili è perché gdrcd ti fonde le schede dei personaggi? Se è così non puoi dalla land ma cancellare il personaggio dalla query personaggio perché è un altro bug di gdrcd che non si trova dove pensi ma direttamente dagli autohackeraggi di gdrcd stesso in iscrizione.php mi sembra (bug tipo: "non può mai" e subito la stringa di gdrcd che fa "accetta sempre ciò che non può mai accettare"). Inoltre controlla le query dei personaggi doppi perché ti rileverà sicuramente come doppi i personaggi cancellati correttamente e corretti con la stringa di questa sezione e pure come se fossero doppi e tuttora esistenti anche tutti coloro che invece hanno avuto un nome cambiato. In entrambi i casi non esistono ma li trovi lo stesso ogni tanto, specialmente se ti ritrovi dei cancellati che non sono definitivamente cancellati o dei cambi di nome che lui vede sempre come personaggi esistenti in un modo illogico perché persiste il bug. Nella query sui log si trovano altri bug combinati alla query personaggi perché lui vede in log spesso esistenti quei personaggi che non esistono più. Noi stiamo cercando di risolvere questo residuo dei più bug abbinati. Ovviamente la stringa ad inizio argomento è solo l'inizio che scopre tutto il vaso di pandora che c'è sotto. Tieni d'occhio perché può darsi che anche a te tra pochi mesi si verificheranno anomalie del genere a quelle che ti ho citato.
13/06/2020 10:15:59
Anche io riscontro il medesimo problema. Ho provato ad integrare la parte inerente rilasciata recentemente (5.5 di GDRCD) ma l'errore riportato permane il medesimo.
GDRCD MySQLi Error [File: deleted.inc.php; Line: 28]
Error Code: 1054
Error String: Unknown column 'mittente' in 'IN/ALL/ANY subquery'
Error Detail: UPDATE log SET nome_interessato = 'Cancellato' WHERE mittente IN (SELECT nome AS personaggio FROM personaggio WHERE permessi = -1)
Il problema dovrebbe essere qui:
gdrcd_query("UPDATE chat SET mittente = 'Cancellato' WHERE nome IN (SELECT nome AS personaggio FROM personaggio WHERE permessi = -1)");
gdrcd_query("UPDATE chat SET destinatario = 'Cancellato' WHERE nome IN (SELECT nome AS personaggio FROM personaggio WHERE permessi = -1)");
gdrcd_query("OPTIMIZE TABLE chat");
gdrcd_query("UPDATE log SET nome_interessato = 'Cancellato' WHERE nome IN (SELECT nome AS personaggio FROM personaggio WHERE permessi = -1)");
gdrcd_query("OPTIMIZE TABLE log");
gdrcd_query("UPDATE messaggiaraldo SET autore = 'Cancellato' WHERE nome IN (SELECT nome AS personaggio FROM personaggio WHERE permessi = -1)");
gdrcd_query("OPTIMIZE TABLE messaggiaraldo");
gdrcd_query("DELETE FROM personaggio WHERE permessi = -1");
gdrcd_query("OPTIMIZE TABLE personaggio");
?>
Non trovo risoluzione anche adoperando i precedenti suggerimenti.
13/06/2020 12:31:30
Operazioni di manutenzione di questo tipo é opportuno automatizzarle comunque, specie se tra regolamento e/o informative sul trattamento dei dati avete specificato che cancellate i dati dei pg inutilizzati entro certi termini temporali dopo l'ultimo accesso.
Una soluzione comoda è un cronjob giornaliero che effettua le cancellazioni dei pg inutilizzati da x giorni (dove "x" è il tempo che avete specificato per la cancellazione automatica degli account inutilizzati o il termine che avete deciso per le cancellazioni di manutenzione)
Potreste quindi aggiungere tutte le query di cancellazione (incluse quelle mancanti dei messaggi dell'araldo) in un'unica funzione di manutenzione che verrebbe lanciata automaticamente ogni giorno all'orario stabilito da voi, senza preoccuparvi di doverlo fare manualmente.
ps: l'ottimizzazione delle tabelle in questo modo potreste farla 1 volta sola dopo aver cancellato tutti i pg che dovete cancelllare, anzichè fare un'ottimizzazione dopo ogni singolo pg cancellato, è decisamente più "pulito" ed efficiente.
19/06/2021 13:05:50 e modificato da nick-nock il 19/06/2021 13:06:36
staff shadowland ha scritto: Anche io riscontro il medesimo problema. Ho provato ad integrare la parte inerente rilasciata recentemente (5.5 di GDRCD) ma l'errore riportato permane il medesimo.
Ciao! anche a me si è presentato lo stesso problema, ho risolto cosi
gdrcd_query("DELETE FROM clgpersonaggiooggetto WHERE nome IN (SELECT nome FROM personaggio WHERE permessi = -1)");
gdrcd_query("OPTIMIZE TABLE clgpersonaggiooggetto");
gdrcd_query("DELETE FROM clgpersonaggioabilita WHERE nome IN (SELECT nome FROM personaggio WHERE permessi = -1)");
gdrcd_query("OPTIMIZE TABLE clgpersonaggioabilita");
gdrcd_query("DELETE FROM clgpersonaggiomostrine WHERE nome IN (SELECT nome FROM personaggio WHERE permessi = -1)");
gdrcd_query("OPTIMIZE TABLE clgpersonaggiomostrine");
gdrcd_query("DELETE FROM clgpersonaggioruolo WHERE personaggio IN (SELECT nome AS personaggio FROM personaggio WHERE permessi = -1)");
gdrcd_query("OPTIMIZE TABLE clgpersonaggioruolo");
gdrcd_query("DELETE FROM messaggi WHERE mittente IN (SELECT nome AS personaggio FROM personaggio WHERE permessi = -1)");
gdrcd_query("DELETE FROM messaggi WHERE destinatario IN (SELECT nome AS personaggio FROM personaggio WHERE permessi = -1)");
gdrcd_query("DELETE FROM backmessaggi WHERE mittente IN (SELECT nome AS personaggio FROM personaggio WHERE permessi = -1)");
gdrcd_query("DELETE FROM backmessaggi WHERE destinatario IN (SELECT nome AS personaggio FROM personaggio WHERE permessi = -1)");
gdrcd_query("OPTIMIZE TABLE messaggi");
gdrcd_query("DELETE FROM araldo_letto WHERE nome IN (SELECT nome AS personaggio FROM personaggio WHERE permessi = -1)");
gdrcd_query("OPTIMIZE TABLE araldo_letto");
gdrcd_query("UPDATE chat SET mittente = 'Cancellato' WHERE mittente IN (SELECT nome AS personaggio FROM personaggio WHERE permessi = -1)");
gdrcd_query("UPDATE chat SET destinatario = 'Cancellato' WHERE destinatario IN (SELECT nome AS personaggio FROM personaggio WHERE permessi = -1)");
gdrcd_query("OPTIMIZE TABLE chat");
gdrcd_query("UPDATE log SET nome_interessato = 'Cancellato' WHERE nome_interessato IN (SELECT nome AS personaggio FROM personaggio WHERE permessi = -1)");
gdrcd_query("OPTIMIZE TABLE log");
gdrcd_query("UPDATE messaggioaraldo SET autore = 'Cancellato' WHERE autore IN (SELECT nome AS personaggio FROM personaggio WHERE permessi = -1)");
gdrcd_query("OPTIMIZE TABLE messaggioaraldo");
gdrcd_query("DELETE FROM personaggio WHERE permessi = -1");
gdrcd_query("OPTIMIZE TABLE personaggio");
20/06/2021 10:30:11
Ohhh grazie mille! *o* appena posso faccio qualche prova e vi dico! :)
20/06/2021 11:40:32
Non dimenticate di rilasciare la patch correttiva :-) E' l'anima dell'OS!
https://www.gdr-online.com/invia_contenuto.asp?cosa=Patch%20Open%20Source ↗
29/06/2021 17:55:40
Ho provato ad effettuare le modifiche e la situazione non cambia. Messaggi ed oggetti restano comunque in scheda all'iscrizione di un Pg con il medesimo nome di uno che magari è stato cancellato tempo prima.
29/06/2021 18:08:21 e modificato da kasa il 29/06/2021 18:44:24
staff shadowland ha scritto: ...
Le query di @mathramstaff sono giuste.
Il precedente Personaggio, però, risulta essere cancellato, giusto?
Se provi a cancellare, in un ambiente di test, un Personaggio che presenta questo errore, poi a DB risultano essere cancellate anche i messaggi e tutto il resto?
Bisogna capire se l'anomalia risulta essere rientrata per le future cancellazioni, così almeno ci si concentra a sistemare le precedenti.
Kasa.
29/06/2021 18:39:01 e modificato da staff shadowland il 29/06/2021 18:39:33
kasa ha scritto:Il precedente Personaggio, però, risulta essere cancellato, giusto?
Esatto
kasa ha scritto:Se provi provi a cancellare, in un ambiente di test, un Personaggio che presenta questo errore, poi a DB risultano essere cancellate anche i messaggi e tutto il resto?
No, risultano presenti
kasa ha scritto:Bisogna capire se l'anomalia risulta essere rientrata per le future cancellazioni, così almeno ci si concentra a sistemare le precedenti.
Non ho la Land attiva, per cui ho fatto dei tentativi e resta tutto invariato purtroppo, che si tratti di vecchi Pg o di una nuova iscrizione.
29/06/2021 22:43:09
staff shadowland ha scritto: No, risultano presenti
Ok.
Se ora provi ad eseguire, dal pannello Manutenzione presente in Gestione, l'operazione Elimina i personaggio provvisoriamente cancellati, risultano esserci ancora i Messaggi ed etc etc a DB?
Kasa.
Discussione seguita da
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
Imperion ↗
World of Warship ↗
Raja Dunia ↗
Hero Wars ↗
AlterEgo ↗
Exclusive Villa GdR ↗
Tibia ↗
Fallen Gods ↗