[RISOLTO] tabelle mysql con prefisso diverso
-
Buon giorno,
sto creando degli articoli usando il plugin sourcerer, che contengono codice php e mysql per popolare delle tabelle del database e per prelevare poi tali dati in maniera dinamica...
Il punto è che dalla console mysql ho notato la presenza nel database del sito joomla che sto sviluppando, di tabelle ripetute, cioè che hanno lo stesso nome ma con un prefisso diverso, ed ovviamente risulta popolata solo quella che ha il prefisso impostato nel file di configurazione globale (configuration.php).
Per esempio la tabella gbgar_content è popolata e contiene gli articoli mentre quella con nome p71ga_content esite con gli stessi campi e attributi ma vuota.
La tabella gbgar_users ha tutti gli utenti registrati mentre la tabella p71ga_users risulta popolata dal record con username "root"..... perchè?
Non ci avevo mai fatto caso prima ma forse sono state duplicate con la migrazione da Joomla 3 a joomla 4?
e cmq ... posso eliminarle? servono?
Grazie per eventuali suggerimenti.
Filippo P -
Dovrebbero essere quelle del precedente sito, anche se la migrazione non dovrebbe cambiare il prefisso della tabella. Forse hai fatto un'installazione di test (da qui il solo utente root) e poi ti sei dimenticato di cancellare le tabelle non più utili una volta cancellata l'installazione di test. Oppure hai un'altra installazione joomla in una sottocartella? Nel dubbio guarda il tuo fle di configurazione dal cpanel, li è riportato il prefisso
-
Se tutto ok metti [RISOLTO] nel titolo, grazie
-
Ok in effetti erano tabelle che si sono create ma erano ininfluenti e anche poco pesanti visto che erano vuote.
In ogni caso le ho eliminate.... Anche se per far prima ho dovuto usare l'interfaccia pkpmyadmin per poterle spuntare ed eliminare, cioè dico, possibile che da console avrei dovuto elencare tutte le tabelle nel comando .... ? Pensavo che un carattere jolly dopo il prefisso tipo :
DROP TABLE prefisso_*
fosse sufficiente.... Esiste un'altra sintassi?
Giusto per saperlo insomma.
Filippo P -
No, niente caratteri jolly su MySQL purtroppo
Se sei in PHP puoi crearti una query che ti setta una lista tipo questa:<?php use Joomla\CMS\Factory; $prefisso = 'prefisso_'; $db = Factory::getContainer()->get('DatabaseDriver'); $query = $db->getQuery(true) ->select('GROUP_CONCAT(TABLE_NAME SEPARATOR ", ")') ->from('INFORMATION_SCHEMA.TABLES') ->where($db->quoteName('TABLE_SCHEMA') . ' = ' . $db->quote($db->getDatabase())) ->where($db->quoteName('TABLE_NAME') . ' LIKE ' . $db->quote($prefisso . '%')); $db->setQuery($query); $tablesList = $db->loadResult(); if (!$tablesList) { echo "Scrivo qualcosa se non ho trovato tabelle che cominciano con '$prefisso'."; return; } // Se invece ho trovato qualcosa allora lancio il DROP TABLE sulla lista $dropQuery = "DROP TABLE " . $tablesList; $db->setQuery($dropQuery);
Ma forse fai prima a selezionarle una a una e cancellarle da phpmyadmin
-
Esatto, ho pensato ad una sintassi diversa ma che come concetto ci fosse modo di fare una cosa analoga in console mysql ma se devo far un lavoro del genere per una volta che devo eliminare delle tabelle da un db, uso l'interfaccia phpmyadmin e amen.... tanto è stata installata.... vorrà dire che per una volta sarà stata utile anche lei.
Filippo