IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Base associative compromise [MySQL-5.5]


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club Avatar de Casio
    Homme Profil pro
    Historien numérique
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Historien numérique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Points : 59
    Points
    59
    Par défaut Base associative compromise
    Salutations,

    désolé, je ne savais pas quoi mettre dans le titre d'autre, c'est la cata !

    Soit une base MySQL 5.5 utilisée via PhpMyAdmin 5.

    Dans un table avec 1748 entrées saisies une a une dans PhpMyAdmin !!!

    Soit maintenant un stagiaire qui a voulu faire du zèle (et mes backup de 2021 en carafe) :
    "Ho je t'ai changé l'interclassement pour éviter les encodage d'accents !"

    Du coups, je me retrouve avec 1748 lignes dont les titres sont des caractères illisibles !!!!!
    Aucun moyen de revenir en arrière.

    Le mieux à faire serait de reprendre une sauvegarde de 2020, mais qui n'était pas aussi complète (mais du coup, j'aurais moins que 1748 à modifier, c'est déjà ça !!!).

    Mais je suis une bille en import, j'en ai une peur maladive, surtout sur 1748 lignes !!!

    L'idée serait de réinsérer ce qu'il y a déjà dans la sauvegarde de 2020, juste au niveau de ce champs, en se calant par exemple sur l'Id.

    Voici la structure de cette partie de la sauvegarde :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    -- phpMyAdmin SQL Dump
    -- version 5.0.2
    -- https://www.phpmyadmin.net/
    --
    -- Hôte : xxxxx.1and1.fr
    -- Généré le : Dim 10 mai 2020 Ã* 13:07
    -- Version du serveur :  5.5.60-0+deb7u1-log
    -- Version de PHP : 7.4.5
     
    SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
    START TRANSACTION;
    SET time_zone = "+00:00";
     
    (...)
    INSERT INTO `Jeux` (`id`, `Sortie`, `Editeur`, `Titre`, `Plateforme`, `Format`, `Type`, `Etat`, `Description`, `Liens`, `Boite`, `Manuel`, `Packaging`, `Ref`, `Commentaire`, `Donateur`, `Prix`, `Transfert`, `Rangement`, `Stock`, `Modif`, `Verif`, `CodeBarre`, `Ecart`, `Raison(s)`) VALUES
    (1, '1980', 'Activision', 'SKIING', 'ATARI 2600', 'Cartouche', 'Ski', 'Ok', '', '', 'Non', 'Non', '', '', '', '?', '?', '?', 'jjmmyy-00', 'Villa', '0000-00-00 00:00:00', '//', '', 'Non', ''),
    (...)
    C'est les données du champ '"Titre" qui sont toutes foutues maintenant.

    Quelle nomenclature dois-je utiliser pour réinsérer juste les données du champs "Titre" de la table "Jeux", dont les données sont perdues dans le dump SQL de 371 Ko de PhpMyAdmin ?

    Merci de votre aide, la je suis un peu en panique ... 15 ans de taf bénévole !!!

    A vous lire,
    Digital self-made Man - OnLine since 1993.
    https://wda-fr.org - https://mathieu.charreyre.net

  2. #2
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Bonjour,

    Sans être spécialiste c'était quoi l'interclassement d'origine et l'interclassement "stagiaire" ?

    Je ne pense pas qu'en changeant l'interclassement, les données soient irrécupérables
    De mon côté si cela arrivait, au pire j'éditerais les données dans un notepad++

    et je tenterais
    1) des changements d'encodage
    2) Si pas de succès, je ferais des changement grigri1 -> é, grigri2 -> è etc.

    Moi la saisie ou re-saisie ça n'a jamais JAMAIS été mon truc, erreurs de saisie, oublis etc.

    [EDIT] n'est-il pas possible de récupérer un backup chez l'hébergeur ?
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  3. #3
    Membre du Club Avatar de Casio
    Homme Profil pro
    Historien numérique
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Historien numérique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Points : 59
    Points
    59
    Par défaut
    D'origine "latin1_swedish_ci" (?!?), passé en mode stagiaire en "utf32_general_ci".
    Digital self-made Man - OnLine since 1993.
    https://wda-fr.org - https://mathieu.charreyre.net

  4. #4
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    J'ai lancé un wamp sur mon PC
    1) J'ai créé une table en latin...
    2) J'ai inséré un enregistrement avec dans le champ titre : "j'ai joué à la pêche"
    3) puis changé ma table en utf32_general_ci
    Nom : Capture0.JPG
Affichages : 61
Taille : 17,0 Ko
    et je retrouve cette même chaine de caractère ...
    Nom : Capture.JPG
Affichages : 63
Taille : 14,4 Ko
    Maintenant le problème apparait où dans phpmyadmin ou sur le site ?
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  5. #5
    Membre du Club Avatar de Casio
    Homme Profil pro
    Historien numérique
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Historien numérique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Points : 59
    Points
    59
    Par défaut
    En fait, la base de données ne comprends maintenant que 2 ou 3 lettres dans le champs "Titre".
    Que ce soit via PhpMyAdmin ou sur le rendu PHP directement sur notre site associatif.

    Comment puis-je réinsérer juste les données de ce champs dans la table, quitte à compléter à la main les 150 données manquantes (c'est toujours moins que 1748 !!!)

    Merci de votre aide ...
    Digital self-made Man - OnLine since 1993.
    https://wda-fr.org - https://mathieu.charreyre.net

  6. #6
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Si j'ai bien compris
    il faut donc reprendre tous ces insert d'une sauvegarde ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO `Jeux` (`id`, `Sortie`, `Editeur`, `Titre`, `Plateforme`, `Format`, `Type`, `Etat`, `Description`, `Liens`, `Boite`, `Manuel`, `Packaging`, `Ref`, `Commentaire`, `Donateur`, `Prix`, `Transfert`, `Rangement`, `Stock`, `Modif`, `Verif`, `CodeBarre`, `Ecart`, `Raison(s)`) VALUES
    (1, '1980', 'Activision', 'SKIING', 'ATARI 2600', 'Cartouche', 'Ski', 'Ok', '', '', 'Non', 'Non', '', '', '', '?', '?', '?', 'jjmmyy-00', 'Villa', '0000-00-00 00:00:00', '//', '', 'Non', ''),
    ... Pour mettre à jour le champ titre vérolé


    Dans ce cas, si id est bien l'identifiant unique, voici la requête par rapport aux données de l'insert ci dessus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Update `Jeux` 
    set Titre = 'SKIING'
    where id = 1
    Evidemment il faut faire le même exercice pour toutes les lignes insert

    Pour automatiser la conversion insert -> update, je prendrais excel ou libreoffice en mettant tous les insert dans un fichier .csv et en ouvrant excel (séparateur ,) pour isoler l'id et le champ titre dans 2 colonnes

    Nom : Capture1.JPG
Affichages : 57
Taille : 56,4 Ko
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  7. #7
    Membre du Club Avatar de Casio
    Homme Profil pro
    Historien numérique
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Historien numérique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Points : 59
    Points
    59
    Par défaut
    Bien, en faisant un import CSV sous Google Sheets, j'ai réussi à isoler l'ID et le Nom en 2 colonnes :

    Nom : Capture.PNG
Affichages : 46
Taille : 37,1 Ko

    Que faire maintenant ?
    Digital self-made Man - OnLine since 1993.
    https://wda-fr.org - https://mathieu.charreyre.net

  8. #8
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Maintenant il faut recopier une formule ex sous libreoffice à adapter sous excel (concatenation sous excel => le + entre les champs )
    =>
    Nom : Capture.JPG
Affichages : 43
Taille : 33,1 Ko

    Puis sous phpmyadmin, copier toutes les requêtes avec le ; à la fin qui permettra d'exécuter plusieurs requêtes et exécuter !
    Je conseille de prendre déjà 2-3 update pour voir si ça marche comme il faut, puis copier-coller l'ensemble et exécuter

    Note pour excel, si les " posent problèmes dans les formules, utiliser ' c'est pareil ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update jeux set titre ='skiiing' where id =1;
    <=>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update jeux set titre ="skiiing" where id =1;
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  9. #9
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Note : Si certaines requêtes update ne fonctionnent pas, il faudra regarder si elles ne contiennent pas d'apostrophe par exemple
    Dans ce cas il faut doubler cet '
    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update jeux set titre ='voici l''apostrophe' where id =1;
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  10. #10
    Membre du Club Avatar de Casio
    Homme Profil pro
    Historien numérique
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Historien numérique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Points : 59
    Points
    59
    Par défaut
    YEEEEEES )

    Merci infiniment !

    A part 3 lignes bizarres (sur les 1748 !), tout à l'air d'être revenu dans l'ordre.

    MERCI

    Voici la formule que j'ai utilisée dans le troisième champs de Google Sheets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =CONCATENER("Update `Jeux` set `Titre` = ";B1;" where `id` = ";A1;";")
    J'ai viré les ' de la variable Titre.

    Merci, pb résolu. Je tape le stagiaire en votre nom !
    Digital self-made Man - OnLine since 1993.
    https://wda-fr.org - https://mathieu.charreyre.net

  11. #11
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Impec !
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. ResourceBundle associé à une base
    Par Arno83 dans le forum Spring
    Réponses: 7
    Dernier message: 08/10/2007, 17h16
  2. Réponses: 5
    Dernier message: 01/10/2007, 23h27
  3. Réponses: 3
    Dernier message: 29/04/2007, 19h33
  4. Réponses: 13
    Dernier message: 12/12/2006, 21h44
  5. associer une base de données(access) a un dbgrid
    Par ange1708 dans le forum MFC
    Réponses: 3
    Dernier message: 11/06/2002, 12h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo