| |
|
| :: |
| Auteur |
Message |
django21
Inscrit le: 09 Jan 2008 Messages: 39
|
Posté le: Mar Oct 14, 2008 7:50 am Sujet du message: Erreur 1064 |
|
|
Bonjour,
j'ai malencontreusement effacé un admin de la BD de mon forum il y a de ça quelque temps.
il s'est réinscrit, et dans l'ordre: je l'ai remis en administrateur dans les permissions des utilisateurs,puis via la BD (phpmyadmin) je lui ai redonné son ID et les posts qui lui appartenaient avant.
Il a donc recupéré son nombre de post son ID sa couleur (RCS) dans les posts.
Tout me semblait donc parfait jusqu'à ce que je veuille lui changer ses permissions dans l'onglet administration des utilisateur.
C'est le seul membre avec qui ça pose problème, voici le message d'erreur lorsque je veux lui changer une permission:
Couldn't delete auth access info
DEBUG MODE
| Citation: | SQL Error : 1064 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 'AND auth_mod = 0' at line 3
DELETE FROM phpbb_auth_access WHERE group_id = AND auth_mod = 0
Line : 200
File : admin_ug_auth.php |
ce qui correspond à cette partie de mon fichier admin_ug_auth.php :
| Code: | //
// Make user an admin (if already user)
//
if ( $userdata['user_id'] != $user_id )
{
$sql = "UPDATE " . USERS_TABLE . "
SET user_level = " . ADMIN . "
WHERE user_id = $user_id";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not update user level', '', __LINE__, __FILE__, $sql);
}
$sql = "DELETE FROM " . AUTH_ACCESS_TABLE . "
WHERE group_id = $group_id
AND auth_mod = 0";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, "Couldn't delete auth access info", "", __LINE__, __FILE__,
$sql);
}
//
// Delete any entries in auth_access, they are not required if user is becoming an
// admin |
Lorsque je veux le remttre en utilisateur normal toujours via les permissions de l'onglet administration des utilisateurs voici le message d'erreur qu'il me met:
| Citation: | Couldn't update private forum permissions
DEBUG MODE
SQL Error : 1064 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 ' 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0)' at line 2
INSERT INTO phpbb_auth_access (forum_id, group_id, auth_view, auth_read, auth_post, auth_reply, auth_edit, auth_delete,
auth_sticky, auth_announce, auth_vote, auth_pollcreate, auth_ban, auth_greencard, auth_bluecard, auth_attachments,
auth_download, auth_mod) VALUES (29, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0)
Line : 447
File : admin_ug_auth.php |
ce qui correspond à cette partie de mon fichier admin_ug_auth.php :
| Code: | // Checks complete, make updates to DB
//
$delete_sql = '';
while( list($forum_id, $action) = @each($forum_auth_action) )
{
if ( $action == 'delete' )
{
$delete_sql .= ( ( $delete_sql != '' ) ? ', ' : '' ) . $forum_id;
}
else
{
if ( $action == 'insert' )
{
$sql_field = '';
$sql_value = '';
while ( list($auth_type, $value) = @each($update_acl_status[$forum_id]) )
{
$sql_field .= ( ( $sql_field != '' ) ? ', ' : '' ) . $auth_type;
$sql_value .= ( ( $sql_value != '' ) ? ', ' : '' ) . $value;
}
$sql_field .= ( ( $sql_field != '' ) ? ', ' : '' ) . 'auth_mod';
$sql_value .= ( ( $sql_value != '' ) ? ', ' : '' ) . ( ( !isset
($update_mod_status[$forum_id]) ) ? 0 : $update_mod_status[$forum_id]);
$sql = "INSERT INTO " . AUTH_ACCESS_TABLE . " (forum_id, group_id,
$sql_field)
VALUES ($forum_id, $group_id, $sql_value)";
}
else
{
$sql_values = '';
while ( list($auth_type, $value) = @each($update_acl_status[$forum_id]) )
{
$sql_values .= ( ( $sql_values != '' ) ? ', ' : '' ) . $auth_type
. ' = ' . $value;
}
$sql_values .= ( ( $sql_values != '' ) ? ', ' : '' ) . 'auth_mod = ' . (
( !isset($update_mod_status[$forum_id]) ) ? 0 : $update_mod_status[$forum_id]);
$sql = "UPDATE " . AUTH_ACCESS_TABLE . "
SET $sql_values
WHERE group_id = $group_id
AND forum_id = $forum_id";
}
if( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, "Couldn't update private forum permissions",
"", __LINE__, __FILE__, $sql);
}
}
}
if ( $delete_sql != '' )
{
$sql = "DELETE FROM " . AUTH_ACCESS_TABLE . "
WHERE group_id = $group_id
AND forum_id IN ($delete_sql)";
if( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, "Couldn't delete permission entries", "", __LINE__,
__FILE__, $sql);
}
}
$l_auth_return = ( $mode == 'user' ) ? $lang['Click_return_userauth'] : $lang
['Click_return_groupauth'];
$message = $lang['Auth_updated'] . '<br /><br />' . sprintf($l_auth_return, '<a href="' .
append_sid("admin_ug_auth.$phpEx?mode=$mode") . '">', '</a>') . '<br /><br />' . sprintf($lang
['Click_return_admin_index'], '<a href="' . append_sid("index.$phpEx?pane=right") . '">', '</a>');
}
//
// Update user level to mod for appropriate users
// |
Je ne pense pas que ce soit un réel problème de syntaxe, vu que ça fonctionne pour tous les autres membres, modos et admins,
mais plutôt une trace de son bannissement qui doit rester dans une des tables...
Si vous pouviez me donner un coup de main , ça serait vraiment sympa...
merci à tous et excellente journée  |
|
|
| Revenir en haut de page |
|
 |
|
 |
dcz Administrateur - Site Admin

Inscrit le: 28 Avr 2006 Messages: 15380
|
Posté le: Sam Oct 18, 2008 12:07 pm Sujet du message: Re: Erreur 1064 |
|
|
Donc tu as effacé le membre depuis l'acp de phpBB2, c'est bien ça ?
Cela expliquerait qu'en plus de l'utilisateur, les références aux groupes aient été également effacé pour l'utilisateur, et du coup tes erreurs : .
| Code: | | WHERE group_id = AND auth_mod = 0 |
Il n'y a aucune valeur pour l'id de groupe, et c'est la même erreur dans les deux requêtes.
Donc le problème semble être qu'en modifiant l'id de l'utilisateur pour lui réattribuer ses ancien posts, tu ne mets pas a jour les tables qui dépendent de cette valeur, au moins la table phpbb_auth_access et donc vraisemblablement la table phpbb_user_group.
Essayes donc dans un premier temps de modifier la valeur de user_id pour le group_id de nouveau compte que tu as créé avant de lui réattribuer l'ancienne id de l'admin dans la table phpbb_user_group. Il faut donc simplement trouver l'entrée ayant l'user_id que tu as modifié dans cette table et la mettre à jour.
Il se pourrait que ça suffise, mais je te conseille vivement de tester cela en local et de bien faire des sauvegarde de ta db avant.
++ |
_________________ Useful links :
SEO Forum || SEO Directory || SEO phpBB || SEO phpBB3 || Search
____________________
Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Référencement phpBB3 || Recherche |
|
| Revenir en haut de page |
|
 |
django21
Inscrit le: 09 Jan 2008 Messages: 39
|
Posté le: Mar Oct 21, 2008 6:20 am Sujet du message: Re: Erreur 1064 |
|
|
| dcz a écrit: | Donc tu as effacé le membre depuis l'acp de phpBB2, c'est bien ça ?
++ |
Bonjour,
oui en quelque sorte c'est bien ça, j'avais installé un mod qui soit disant empêchait les admins de se faire bannir..
Je donc testé le bannissement depuis le pca, et c'est là que j'ai foiré...
| dcz a écrit: | Il faut donc simplement trouver l'entrée ayant l'user_id que tu as modifié dans cette table et la mettre à jour.
Il se pourrait que ça suffise, mais je te conseille vivement de tester cela en local et de bien faire des sauvegarde de ta db avant.
++ |
Je veux bien, mais comment je fais pour savoir quel ID il avait avant??
Pour lui redonner ces posts, j'ai fais une requete sql qui ressemblait a ceci:
| Code: | | UPDATE `nom BDD`.`phpbb_posts` SET `poster_id` = '3' WHERE `post_username` = 'pseudo admin effacé' |
Et pour lui redonner son ID, je suis aller dans la table user puis je lui ai changé son ID (je lui ai remi l'ID = 3)...
Si tu as une idée
Merci à toi  |
|
|
| Revenir en haut de page |
|
 |
dcz Administrateur - Site Admin

Inscrit le: 28 Avr 2006 Messages: 15380
|
Posté le: Dim Oct 26, 2008 11:28 am Sujet du message: Re: Erreur 1064 |
|
|
Et bien, si tu n'as pas effacé l'entrée correspondant au profile temporaire dans la table user, tu peux retrouver son ID à partir de son pesudo.
Au pire tu peux essayer d'ajouter une entrée dans la table phpbb_user_group avec comme user_id 3 et comme group_id la plus grande ID actuelle + 1 ou une valeur plus petite non utilisée.
Encore une fois, a tester avant d'envoyer en ligne.
++ |
_________________ Useful links :
SEO Forum || SEO Directory || SEO phpBB || SEO phpBB3 || Search
____________________
Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Référencement phpBB3 || Recherche |
|
| Revenir en haut de page |
|
 |
|
| Navigation |
Autres sujets de discussion |
|
|
|
|
|
|
|