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

Administration MySQL Discussion :

Sauvegarde des vues bizarre !


Sujet :

Administration MySQL

  1. #1
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut Sauvegarde des vues bizarre !
    Bonjour

    Lorsque j'utilise la fonction exporter de phpMyAdmin pour sauvegarder ma BDD en format SQL, pour les vues, il :
    - Crée une table au nom de la vue avec la structure des colonnes de la vue ;
    - Supprime la table qui vient d'être créée ;
    - Crée a vue mais avec une syntaxe bizarre qui la rend inutilisable une fois importer sur un autre serveur :
    Code SQL : 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
    18
    19
    --
    -- Doublure de structure pour la vue `v_utilisateur`
    --
    DROP VIEW IF EXISTS `v_utilisateur`;
    CREATE TABLE IF NOT EXISTS `v_utilisateur` (
    `userId` int(11)
    ,`userLogin` varchar(24)
    ,`userValide` tinyint(1)
    ,`userPwd` varchar(255)
    ,`userNom` varchar(48)
    ,`userPrenom` varchar(32)
    );
     
    --
    -- Structure de la vue `v_utilisateur`
    --
    DROP TABLE IF EXISTS `v_utilisateur`;
     
    CREATE ALGORITHM=UNDEFINED DEFINER=`pef`@`127.0.0.1` SQL SECURITY DEFINER VIEW `v_utilisateur` AS select `u`.`uti_id_personne_physique` AS `userId`,`u`.`uti_login` AS `userLogin`,`u`.`uti_valide` AS `userValide`,`u`.`uti_mot_passe` AS `userPwd`,`p`.`prs_nom` AS `userNom`,`pph`.`pph_prenom` AS `userPrenom` from ((`th_utilisateur_uti` `u` join `th_personne_physique_pph` `pph` on((`pph`.`pph_id_personne` = `u`.`uti_id_personne_physique`))) join `te_personne_prs` `p` on((`p`.`prs_id` = `pph`.`pph_id_personne`)));

    C'est la partie ALGORITHM=UNDEFINED DEFINER=`pef`@`127.0.0.1` SQL SECURITY DEFINER qui fout le bordel !
    Lorsqu'on essaie d'interroger la vue, on a un message d'erreur à propos du definer.

    J'ai supprimé les vues importées et repris chaque CREATE VIEW ... AS SELECT ... et je n'ai pas eu de souci pour la création ni lors de l'interrogation.

    Y a t-il un moyen d'éviter ce morceau inutile lors de la sauvegarde ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 766
    Points : 52 563
    Points
    52 563
    Billets dans le blog
    5
    Par défaut
    Oui, ne pas utiliser de vues !!!! ;-)

    Oh les joies de MySQmerde.

    Sérieusement comme les vues ne sont pas performantes avec MySQL...

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Oui, ne pas utiliser de vues !!!! ;-)
    Oh ! Fred ! Toi qui clame toujours que l'application ne doit accéder à la BDD que via des vues !

    Oh les joies de MySQmerde.
    Oui, ça ce n'est pas nouveau !

    Sérieusement comme les vues ne sont pas performantes avec MySQL...
    Arf !
    Bon, pas grave... cette BDD ne devrait pas prendre une ampleur considérable, même jusqu'à ma retraite dans une dizaine d'années.
    Par contre, c'est quand même plus facile d'écrire dans le code applicatif (et à lire et déboguer aussi) une requête sur une vue qui a déjà pré-mâché le boulot plutôt que se taper les multiples jointures à chaque fois.

    Faudra juste que je fasse gaffe si un jour je dois restaurer la BDD à partir d'une sauvegarde.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    - Crée une table au nom de la vue avec la structure des colonnes de la vue ;
    - Supprime la table qui vient d'être créée ;


    ==> mieux vaut créer des tables puis les supprimer et qu'il ne se passe rien plutôt que de ne pas les créer et risquer qu'il se passe quelque chose de pire...

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 134
    Points : 38 557
    Points
    38 557
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par CinePhil Voir le message

    Lorsque j'utilise la fonction exporter de phpMyAdmin pour sauvegarder ma BDD en format SQL, pour les vues, il :
    - Crée une table au nom de la vue avec la structure des colonnes de la vue ;
    - Supprime la table qui vient d'être créée ;
    - Crée a vue mais avec une syntaxe bizarre qui la rend inutilisable une fois importer sur un autre serveur :
    MariaDB ou le syndrome Shadok : "pourquoi faire simple quand on peut faire compliqué"

    Pièce jointe 314676

    Citation Envoyé par CinePhil Voir le message
    C'est la partie ALGORITHM=UNDEFINED DEFINER=`pef`@`127.0.0.1` SQL SECURITY DEFINER qui fout le bordel !
    Lorsqu'on essaie d'interroger la vue, on a un message d'erreur à propos du definer.
    C'est tellement sécurisé que personne peut utiliser la vue; il suffisait d'y penser ! Merci MariaDB

  6. #6
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    MariaDB ou le syndrome Shadok
    Oui, c'était un peu l'idée :
    Nom : shadok4.jpg
Affichages : 397
Taille : 22,2 Ko



    Citation Envoyé par escartefigue Voir le message
    C'est tellement sécurisé que personne peut utiliser la vue;
    Ha non, attention :
    Nom : shadok_passoire.jpg
Affichages : 401
Taille : 18,9 Ko

    Allez, je vais mobiliser ma connerie sur des choses intelligentes. ++

  7. #7
    Membre à l'essai
    Inscrit en
    Janvier 2003
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 7
    Points : 13
    Points
    13
    Par défaut
    Excusez-moi de déterrer ce vieux sujet...

    Si vous obtenez une erreur à propos du "DEFINER" c'est parce que l'utilisateur `pef`@`127.0.0.1`, qui était créateur de la vue sur le premier serveur, n'existe pas sur le deuxième serveur.

    Pour réparer, il suffit de remplacer, dans la sauvegarde de la vue (avant restauration) :

    DEFINER=`pef`@`127.0.0.1`

    Par un utilisateur qui existe sur le nouveau serveur, par exemple (mais au pire) : `root`@`127.0.0.1`

    J'ai été confronté au même problème quand j'ai renommé mon utilisateur "root" pour plus de sécurité : dès que j'ai fais ça (et sans parler de sauvegardes/restauration), mes vues ne marchaient plus et me renvoyaient la même erreur que vous.

  8. #8
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 380
    Points : 19 062
    Points
    19 062
    Par défaut
    Salut à tous

    @ CinePhil : il serait bien de nous donner la version de ton mariadb.

    Je suis sous Windows 10 Pro, et j'utilise "mysql 8.0.29" sous Wamp.
    J'ai testé un export en passant par phpmyadmin et je n'ai pas ce genre de ligne qui apparait.
    J'ai fait de même en ligne de commande en utilisant mysqldump, j'obtiens le même résultat, pas de "definer".

    J'ai fait une recherche sur le net et il existe un paramètre qui permet de ne plus avoir ce "definer".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysqlpump  --skip-definer  --host localhost --user root --password ????  --databases test --result-file=test2.sql
    Ce paramètre date de la version 5.7.8 et s'utilise avec mysqlpump.

    Je crois que tu te trouves sous linux.
    Pourquoi ne pas utiliser une moulinette pour supprimer ce qui te dérange au cas où tu ne peux supprimer ces "definer" par un paramétrage ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i -e 's/ALGORITHM=UNDEFINED DEFINER=.*$/\*\//g' dump.sql
    Cordialement.
    Artemus24.
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/05/2016, 15h45
  2. [Souris] Sauvegarde des paramètres du driver
    Par Giovanny Temgoua dans le forum x86 16-bits
    Réponses: 7
    Dernier message: 31/01/2004, 19h24
  3. Problèmes avec des vues
    Par dady dans le forum MFC
    Réponses: 22
    Dernier message: 09/01/2004, 16h26
  4. Sauvegarde des attributs de texte en fichier ini
    Par Raylemon dans le forum Langage
    Réponses: 2
    Dernier message: 06/09/2003, 21h28
  5. [Crystal Report] Utilisation des vues de sql serveur
    Par Olivierakadev dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 15/11/2002, 17h44

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