wadqc / WAD_Interface

NVKF WAD webinterface
3 stars 1 forks source link

Inventarisatie DB tools #52

Open tcdewit opened 9 years ago

tcdewit commented 9 years ago

In deze issue zou ik graag de behoefte willen inventariseren naar tools/pagina's voor beheer/opschonen van de database. Idee is om dit onder het admin-menu te plaatsen. Enkele voorbeelden:

graag aanvullen!

wadqc commented 9 years ago
tcdewit commented 9 years ago

Zie eerste opzet in commit 215ef40a0085c61356a11d1fc078a133914961fa. Er zijn nu 3 acties geïmplementeerd; 2 zijn nog WIP. Het is niet moeilijk om daar acties aan toe te voegen, mochten er reacties bijkomen in deze issue-thread.

wadqc commented 9 years ago

Even snel getest: bij actie: verwijderen pat/studies/series zonder entry in gewenste processen tabel krijg ik deze foutmelding: "Fatal error: Call to a member function close() on a non-object in C:\WAD-software\WAD_Interface\website\WAD-IQC\database\iqc\beheer_db.php on line 510" Data is niet verwijderd.

wadqc commented 9 years ago

Lijkt me verstandig hier een tweetraps raket van te maken: dropdown box + een knop. Beetje gevaarlijk zo (ondanks rode tekst)

wadqc commented 9 years ago

Actie "verwijder alle resultaten voor specifieke selector" is blijkbaar een zware query, duurt nogal lang (proces mysql actief) en uiteindelijk melding: "Fatal error: Maximum execution time of 30 seconds exceeded in C:\WAD-software\WAD_Interface\website\WAD-IQC\database\iqc\beheer_db.php on line 259"

tcdewit commented 9 years ago
tcdewit commented 9 years ago

Om niet al het werk voor niets te laten zijn geweest.. zo had ie er uit moeten zien: ;-) image

wadqc commented 9 years ago
tcdewit commented 9 years ago

close() error is nu opgelost voor beide gevallen (bleek niet nodig gezien delete-stmt geen mysqli-object teruggeeft). Verder wordt nu ook daadwerkelijk gekeken naar de dcm4chee db; er werd per ongeluk nog steeds $link gebruikt ipv $link_dcm4chee.

tcdewit commented 9 years ago

Trage query is nu gefixt. Zijn naam en omschrijving genoeg? Of zijn er meerdere kolommen gewenst bij de "verwijder alle resultaten voor specifieke selector" query?

wadqc commented 9 years ago

Query is nu snel. Bij verwijderen resultaten selector kreeg is wel weer een time-out (30s), gedurende die tijd is proces mysqld actief. Bij 2e keer verwijderen (dus: herhaling opdracht) gaat het heel snel (1s). Gereproduceerd bij verwijderen resultaten andere selector. Eindresultaat is dus wel positief, maar opdracht moet twee keer gegeven worden. Aantal kolommen is wat mij betreft ok.

wadqc commented 9 years ago

Verwijderen resultaten selector: de staat van de database na deze actie is wel inconsistent lijkt me. Selector staat nog wel in de resultaten lijst, maar deze is leeg. Studies staan nog wel in de processor lijst, maar kunnen niet meer gestart worden (XML output mappen zijn weg, geeft fout van processor). Ideeen:

wadqc commented 9 years ago

Verwijder gewenste processen zonder resultaten: query geeft: "Aantal gewenste processen zonder resultaten: 99". Vervolgens knop Go! geeft foutmelding:

         Error in executing delete resultaten_floating,resultaten_char,resultaten_object,resultaten_boolean from gewenste_processen left join resultaten_floating on gewenste_processen.pk=resultaten_floating.gewenste_processen_fk left join resultaten_char on gewenste_processen.pk=resultaten_char.gewenste_processen_fk left join resultaten_object on gewenste_processen.pk=resultaten_object.gewenste_processen_fk left join resultaten_boolean on gewenste_processen.pk=resultaten_boolean.gewenste_processen_fk where gewenste_processen.selector_fk in () stmt

        error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 11
wadqc commented 9 years ago

Verwijder pat/stu/ser en stu/ser zonder entry in gewenste processen: werkt. Van deze entries zouden er ook geen referenties in de analysemodule_input/output tabellen zijn. Bijbehorende referenties in de collector_study_status zie ik ook niet terug, dat klopt ook.

tcdewit commented 9 years ago

To Do:

ALTER TABLE gewenste_processen ADD CONSTRAINT gewenste_processen_ibfk_1 FOREIGN KEY (analysemodule_input_fk) REFERENCES analysemodule_input (pk) ON DELETE CASCADE ON UPDATE CASCADE, ADD CONSTRAINT gewenste_processen_ibfk_2 FOREIGN KEY (analysemodule_output_fk) REFERENCES analysemodule_output (pk) ON DELETE CASCADE ON UPDATE CASCADE;

Bij weghalen van een analysemodule_input.pk zal het bijbehorende gewenste proces worden gedelete, terwijl dit juist andersom zou moeten.

tcdewit commented 9 years ago

Dit laatste is helaas vanwege de db structuur niet mogelijk (dan hadden de analysemodule_input/output tabellen namelijk fk's moeten bevatten naar de gewenste processen entries ipv andersom). In de code is dit op te lossen door per gewenst_proces.pk de bijbehorende analysemodule_input/output entries middels een delete-query te verwijderen. In de beheer-pagina zou ik daar ook nog een query voor kunnen toevoegen (entries in analysemodule_input/output tabel zonder bijbehorend gewenst proces).

tcdewit commented 9 years ago

Fysiek opschonen van de XML/analysemodule_input folder vanuit de webinterface is helaas niet mogelijk; althans niet op alle platforms, gezien deze door de Services worden aangemaakt (meestal een andere gebruiker dan de apache-user en dus andere permissies). Voorstel voor enhancement: een commandline tool die de xml's opschoont op basis van beschikbaarheid in de db.