Back to top

Autore Topic: [RISOLTO] DB function failed with error number 1054  (Letto 7667 volte)

Offline ventus85

  • Instancabile
  • ******
  • Post: 6538
  • Sesso: Femmina
  • Affetta da Joomlaite
    • Mostra profilo
[RISOLTO] DB function failed with error number 1054
« il: 16 Apr 2009, 10:27:16 »
Se vado a gestione utenti nel backend (http://.../administrator/index.php?option=com_users per intenderci) al posto della classica visualizzazione compare questo errore:
DB function failed with error number 1054
Citazione
Unknown column 'aro.aro_id' in 'on clause' SQL=SELECT a.*, g.name AS groupname FROM jos_users AS a INNER JOIN jos_core_acl_aro AS aro ON aro.value = a.id INNER JOIN jos_core_acl_groups_aro_map AS gm ON gm.aro_id = aro.aro_id INNER JOIN jos_core_acl_aro_groups AS g ON g.group_id = gm.group_id GROUP BY a.id LIMIT 0, 20
Detta così sembra che non riconosca il valore di aro_id nella tabella jos_core_acl_aro, ma ho controllato e un valore c'è.
E stesso valore è in id della tabella jos_core_acl_aro.
Nella tabella jos_core_acl_aro_groups non so quale valore controllare, è composta da più righe, precisamente 11 righe corrispondenti ai vari "ruoli" degli utenti (amministratore,pubblicatore ecc ecc).


La tabella jos_users va bene, jos_core_acl_groups_aro_map non ne ho la più pallida idea, ma credo vada bene, ha un'unica riga:
group_id: ha un numero
section_value: non ha valori
aro_id: ha un numero.
Il numero gid della jos_users corrisponde a quello di group_id.

Operazioni fatte tra una versione corretta e questa:
  • migrazione dall'ultima 1.0x all'ultima 1.5.;
  • installazione di EasyGuestbook, SqUeReOshow e del plugin lazybackup;
  • installazione di ZOOm media Gallery e poi disintallata (era per una prova) e installazione di Phoca guestbook e poi disintallato (ho preferito l'altro);
  • installazione di un paio di template.
Vi dico tutte queste operazioni perchè effettivamente non so da quale momento ha cominciato a dare l'errore, visto che non tutti i giorni vado su gestione utenti  :D
Ho controllato sul sito prima della migrazione (ho ancora una copia) e non mi da l'errore citato.

Ho gli stessi valori nel database della versione prima della migrazione di entrambe le tabelle.

Tra le varie soluzioni postate nel forum e a giro sul web non ho trovato nulla che faceva al caso mio, questa però è interessante:
Citazione
Questo genere di errore è dovuto ad una lieve variazione della
sintassi tra le query mySQL e si verifica in alcune vecchie versioni
di Mambo (inferiori alla 4.5.4) oppure in alcuni componenti quando
l'installazione viene fatta su un server che ospita un database mySQL
5.0.
Trattandosi di una incompatibilità di lieve portata è sufficiente
modificare leggermente la query mySQL che ha generato l'errore e che
viene sempre riportata per intero nella segnalazione assieme al file
interessato.
Una volta individuata la riga ed il file, per risolvere il problema
basta modificare l'ordine delle tabelle della query facendo in modo
che quella principale appaia alla fine dell'elenco.
Ad esempio, se l'errore si verifica nel file administrator/components/
com_content/admin.content.php basta modificare la riga di codice:
 . "\n FROM , #__content AS c, #__categories AS cc, #__sections AS s"
come segue:
 . "\n FROM #__categories AS cc, #__sections AS s, #__content AS c "
ed analogamente per le altre righe in cui la tabella principale dei
contenuti mos_content (indicata nel codice con #__content) non viene
riportata alla fine.
Analoghe trasformazioni sono necessarie, ad esempio, nel componente
events, in cui la tabella principale #__events dovrà essere sempre
disposta nell'ultimo posto dell'elenco tabelle della query.
Ma non so quale modifiche apportare nel mio caso.

Che dite, provo a ricaricare sul database queste tabelle?
E se provassi a riparare il database?

Grazie.


Ah, dimenticavo: versione MySQL 5.0.68-log

Ho fatto anche il debug del sistema:
Citazione
Informazioni Profilo
Application afterLoad: 0.003 seconds, 0.31 MB
Application afterInitialise: 0.128 seconds, 3.78 MB
Application afterRoute: 0.132 seconds, 3.79 MB
Application afterDispatch: 0.232 seconds, 4.48 MB
Application afterRender: 0.307 seconds, 4.93 MB
Utilizzo della memoria 5211780
17 queries logged.

   1.
      SELECT *
        FROM jos_session
        WHERE session_id = 'XXXXXXXXXXXXXX'
   2.
      DELETE
        FROM jos_session
        WHERE ( time < '1239862375' )
   3.
      SELECT *
        FROM jos_session
        WHERE session_id = 'YYYYYYYYYYYYY'
   4.
      UPDATE `jos_session`
        SET `time`='1239863275',`userid`='HH',`usertype`='Super Administrator',`username`=(altri dati sensibili, l'errore sarà qui?)
        WHERE session_id='ZZZZZZZZZ'
   5.
      SELECT *
        FROM jos_components
        WHERE parent = 0
   6.
      SELECT folder AS type, element AS name, params
        FROM jos_plugins
        WHERE published >= 1
        AND access <= 2
        ORDER BY ordering
   7.
      SELECT id, title, module, position, content, showtitle, control, params
        FROM jos_modules AS m
        LEFT JOIN jos_modules_menu AS mm
        ON mm.moduleid = m.id
        WHERE m.published = 1
        AND m.access <= 2
        AND m.client_id = 1
        ORDER BY position, ordering
   8.
      SELECT COUNT(*)
        FROM jos_session
        WHERE userid != 0
        ORDER BY usertype, username
   9.
      SELECT username, time, userid, usertype, client_id
        FROM jos_session
        WHERE userid != 0
        ORDER BY usertype, username
  10.
      SELECT template
        FROM jos_templates_menu
        WHERE client_id = 1
        AND menuid = 0
  11.
      SELECT a.hits, a.id, a.sectionid, a.title, a.created, u.name
        FROM jos_content AS a
        LEFT JOIN jos_users AS u
        ON u.id=a.created_by
        WHERE a.state <> -2
        ORDER BY hits DESC
        LIMIT 0, 10
  12.
      SELECT a.id, a.sectionid, a.title, a.created, a.modified, u.name, a.created_by_alias, a.created_by
        FROM jos_content AS a
        LEFT JOIN jos_users AS u
        ON u.id = a.created_by
        WHERE a.state <> -2
        ORDER BY created DESC
        LIMIT 0, 10
  13.
      SELECT menutype, COUNT(id) AS numitems
        FROM jos_menu
        WHERE published = 1
        GROUP BY menutype
  14.
      SELECT a.*, SUM(b.home) AS home
        FROM jos_menu_types AS a
        LEFT JOIN jos_menu AS b
        ON b.menutype = a.menutype
        GROUP BY a.id
  15.
      SELECT *
        FROM jos_components
        WHERE `option` <> "com_frontpage"
        AND `option` <> "com_media"
        AND enabled = 1
        ORDER BY ordering, name
  16.
      SELECT COUNT(*)
        FROM jos_messages
        WHERE state = 0
        AND user_id_to = 62
  17.
      SELECT COUNT( session_id )
        FROM jos_session
        WHERE guest <> 1

Legacy Queries Logged.

File lingua caricati [...]

Stringhe Diagnostica non tradotte

Nessuna

Stringhe Designer non tradotte

Nessuna
« Ultima modifica: 17 Apr 2009, 22:08:06 da ventus85 »
Se volete aiuto non mandate messaggi privati, ma usate la funzione Cerca e postate sul forum, grazie!

Born in the wind, born to be wild!

Offline ventus85

  • Instancabile
  • ******
  • Post: 6538
  • Sesso: Femmina
  • Affetta da Joomlaite
    • Mostra profilo
Re: DB function failed with error number 1054
« Risposta #1 il: 16 Apr 2009, 14:03:11 »
Tramite riparazione e ottimizzazione non ho risolto nulla.

Citazione
Op      Msg_type       Msg_text
repair      status           OK

Vediamo di andare in ordine:
Citazione
SELECT *
        FROM jos_session
        WHERE session_id = 'XXXXXXXXXXXXXX'
Nella tabella jos_session ho tre righe e tre valori diversi di session_id tra cui quello indicato dalla query segnalata.
Gli altri due valori non hanno corrispondenze in username,usertype. Inoltre per questi due gid e client_id valgono 0, mentre guest vale 1.

Query del tipo (consigliate su un altro sito)
Codice: [Seleziona]
DROP TABLE IF EXISTS `jos_session`;
CREATE TABLE IF NOT EXISTS `jos_session` (
  `username` varchar(50) default '',
  `time` varchar(14) default '',
  `session_id` varchar(200) NOT NULL default '0',
  `guest` tinyint(4) default '1',
  `userid` int(11) default '0',
  `usertype` varchar(50) default '',
  `gid` tinyint(3) unsigned NOT NULL default '0',
  PRIMARY KEY  (`session_id`),
  KEY `whosonline` (`guest`,`usertype`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Non vanno bene.

Boh, anche per le altre non saprei cosa fare.
Grazie.


Edit: non è che devo riscrivere nella scheda SQL quelle query?

« Ultima modifica: 16 Apr 2009, 14:17:21 da ventus85 »
Se volete aiuto non mandate messaggi privati, ma usate la funzione Cerca e postate sul forum, grazie!

Born in the wind, born to be wild!

Offline ventus85

  • Instancabile
  • ******
  • Post: 6538
  • Sesso: Femmina
  • Affetta da Joomlaite
    • Mostra profilo
Re: DB function failed with error number 1054
« Risposta #2 il: 17 Apr 2009, 18:02:41 »
Sono un passo avanti.
Per quanto riguarda
Se vado a gestione utenti nel backend (http://.../administrator/index.php?option=com_users per intenderci) al posto della classica visualizzazione compare questo errore:
DB function failed with error number 1054
Citazione
Unknown column 'aro.aro_id' in 'on clause' SQL=SELECT a.*, g.name AS groupname FROM jos_users AS a INNER JOIN jos_core_acl_aro AS aro ON aro.value = a.id INNER JOIN jos_core_acl_groups_aro_map AS gm ON gm.aro_id = aro.aro_id INNER JOIN jos_core_acl_aro_groups AS g ON g.group_id = gm.group_id GROUP BY a.id LIMIT 0, 20
Ho trovato nel file admin.users.php in /administrator/components/com_users questa riga di codice:
Citazione
$query = "SELECT a.*, g.name AS groupname"
   . "\n FROM #__users AS a"
   . "\n INNER JOIN #__core_acl_aro AS aro ON aro.value = a.id"   // map user to aro
   . "\n INNER JOIN #__core_acl_groups_aro_map AS gm ON gm.aro_id = aro.aro_id"   // map aro to group
   . "\n INNER JOIN #__core_acl_aro_groups AS g ON g.group_id = gm.group_id";
Che è praticamente uguale a quella citata nella schermata, manca solo il "GROUP BY a.id LIMIT 0, 20".
Per fare questo "passo" ho preso spunto da questo link dove c'è un errore simile (stessa tipologia ma query diversa).
Praticamente devo cambiare questa fantomatica riga perchè non corrispondono le colonne del database, infatti sempre il famoso link dice di cambiare così (nel caso di quella query):
Citazione
old: . "\n FROM , #__content AS c, #__categories AS cc, #__sections AS s"
new: . "\n FROM #__categories AS cc, #__sections AS s, #__content AS c "
Quindi io devo fare, dopo un bel backup, queste due cose (credo):
1) trovare in quale file è presente effettivamente quel pezzo di codice (o meglio controllare se è quello indicato);
2) modificare il pezzo di codice cambiando le "corrispondenze" (dopo aver capito quali sono le vere corrispondenze).

Sembra sia un problema dei server che usano MYSql 5.



Edit(1)
Tra le varie soluzioni avevo provato a sostituire aro_id con id (come indicato qui) anche perchè effettivamente non ho nel database quella colonna ma il problema non è questo, infatti
Citazione
DB function failed with error number 1054
Unknown column 'gm.id' in 'on clause' SQL=SELECT a.*, g.name AS groupname FROM jos_users AS a INNER JOIN jos_core_acl_aro AS aro ON aro.value = a.id INNER JOIN jos_core_acl_groups_aro_map AS gm ON gm.id = aro.id INNER JOIN jos_core_acl_aro_groups AS g ON g.group_id = gm.group_id GROUP BY a.id LIMIT 0, 20
Io l'ho modificato solo nel file admin.users.php e non in altri.

Edit(2)
VITTORIA
Ci sono riuscita!
Ecco il mio ragionamento:

Codice: [Seleziona]
$query = "SELECT a.*, g.name AS groupname"
. "\n FROM #__users AS a"
. "\n INNER JOIN #__core_acl_aro AS aro ON aro.value = a.id" // map user to aro
. "\n INNER JOIN #__core_acl_groups_aro_map AS gm ON gm.aro_id = aro.aro_id" // map aro to group
. "\n INNER JOIN #__core_acl_aro_groups AS g ON g.group_id = gm.group_id";

Colonne interessanti per la query
users: id, gid.
core_acl_aro: id, value
core_acl_groups_aro_map: group_id, aro_id
core_acl_aro_groups: id, value

Nomi usati nella query
a è la tabella users
aro è la tabella core_acl_aro
gm è la tabella core_acl_groups_aro_map
g è la tabella core_acl_aro_groups

Quindi (sostituendo il nome per facilitarmi)
core_acl_aro.value=users.id  (ok)
core_acl_groups_aro_map.aro_id=core_acl_aro.aro_id   (non ho aro_id in core_acl_aro ma id)
core_acl_aro_groups.group_id=core_acl_groups_aro_map.group_id (non ho group_id in core_acl_aro_groups ma id)
Quindi ho tolto aro_id nella seconda sostituendolo con id e ho tolto group_id sostituendolo con id nella terza, in questo modo.
Codice: [Seleziona]
$query = "SELECT a.*, g.name AS groupname"
. "\n FROM #__users AS a"
. "\n INNER JOIN #__core_acl_aro AS aro ON aro.value = a.id" // map user to aro
. "\n INNER JOIN #__core_acl_groups_aro_map AS gm ON gm.aro_id = aro.id" // map aro to group
. "\n INNER JOIN #__core_acl_aro_groups AS g ON g.id = gm.group_id";

Unico problema rimasto è che nella pagina http://.../administrator/index.php?option=com_users (gestione utenti per intenderci) in "Ultima visita" viene "_CURRENT_SERVER_TIME_FORMAT", ma è una cosa minima.

RISOLTO!!!
« Ultima modifica: 17 Apr 2009, 22:07:38 da ventus85 »
Se volete aiuto non mandate messaggi privati, ma usate la funzione Cerca e postate sul forum, grazie!

Born in the wind, born to be wild!

Offline vittoriop_2001

  • Appassionato
  • ***
  • Post: 304
    • Mostra profilo
Re:[RISOLTO] DB function failed with error number 1054
« Risposta #3 il: 07 Set 2010, 12:12:12 »
Ciao ho fatto il procedimento che hai detto tu, prima gli utenti non si vedevano, invece adesso si vedono; però se ci clicco sopra mi esce questo:

Impossibile edit un 'Register'. Solo gli utenti di alto livello hanno questo potere
e poi esce questa pagina Warning: array_merge() [function.array-merge]: Argument #1 is not an array in /public_html/administrator/components/com_users/admin.users.php on line 794

Cosa può essere?

L'errore DB function failed with error number 1054
Unknown column 's.title' in 'field list' SQL=SELECT c.*, g.name AS groupname, cc.name, u.name AS editor, f.content_id AS frontpage, s.title AS section_name, v.name AS author FROM jos_content AS c LEFT JOIN jos_categories AS cc ON cc.id = c.catid LEFT JOIN jos_sections AS s ON s.id = c.sectionid LEFT JOIN jos_groups AS g ON g.id = c.access LEFT JOIN jos_users AS u ON u.id = c.checked_out LEFT JOIN jos_users AS v ON v.id = c.created_by LEFT JOIN jos_content_frontpage AS f ON f.content_id = c.id WHERE c.state >= 0 AND c.catid = cc.id AND cc.section = s.id AND s.scope = 'content' ORDER BY s.title, c.catid, cc.ordering, cc.title, c.ordering LIMIT 30

mi è uscito dopo aver installato la patch seo
« Ultima modifica: 07 Set 2010, 12:17:20 da vittoriop_2001 »

Offline vittoriop_2001

  • Appassionato
  • ***
  • Post: 304
    • Mostra profilo
Re:[RISOLTO] DB function failed with error number 1054
« Risposta #4 il: 07 Set 2010, 12:47:44 »
Trovato senza fare il procedimento che hai fatto prima.

Basta rinominare admin.users.php in admin.users.php.old 8)

 



Web Design Bolzano Kreatif