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 :

Echec total ou partiel d'un import à cause de DEFINER - #1227 - Access denied ?


Sujet :

Administration MySQL

  1. #1
    Membre éclairé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    avril 2009
    Messages
    1 210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : avril 2009
    Messages : 1 210
    Points : 780
    Points
    780
    Par défaut Echec total ou partiel d'un import à cause de DEFINER - #1227 - Access denied ?
    bonjour,

    En utilisant phpmyadmin, j'essaie d'importer un gros backup .sql (100mb). (je migre un moodle sql d'un serveur à un autre)

    Après qq minutes minutes, à la fin j'ai ce message d'erreur de phpmyadmin :

    Error

    SQL query: Documentation

    /*!50001 CREATE ALGORITHM=UNDEFINED */
    /*!50013 DEFINER=`moodle`@`localhost` SQL SECURITY DEFINER */
    /*!50001 VIEW `les_resultats` AS (select `mdl_scorm_scoes_track`.`id` AS `id`,date_format(from_unixtime(`mdl_scorm_scoes_track`.`timemodified`),'%Y-%m-%d') AS `MOMENT`,`mdl_scorm`.`name` AS `name`,`mdl_scorm_scoes_track`.`userid` AS `userid`,(case when (`mdl_scorm_scoes_track`.`element` like '%.id') then 'MATIERE' when (`mdl_scorm_scoes_track`.`element` like '%.score.max') then 'BAREME' when (`mdl_scorm_scoes_track`.`element` like '%.score.raw') then 'NOTE' end) AS `DESIGNATION`,(case when (`mdl_scorm_scoes_track`.`value` = 'Parlons_de___') then 'Parlons de...' when (`mdl_scorm_scoes_track`.`value` = 'Parlons_de____') then 'Parlons de...' when (`mdl_scorm_scoes_track`.`value` = 'Compr_hension_Orale') then 'Compréhension orale' when (`mdl_scorm_scoes_track`.`value` = 'Compr_hension__crite') then 'Compréhension écrite' else `mdl_scorm_scoes_track`.`value` end) AS `value` from (`mdl_scorm_[...]

    MySQL said: Documentation
    #1227 - Access denied; you need (at least one of) the SUPER, SET USER privilege(s) for this operation
    Sur la gauche de l'interface phpmyadmin, je vois les nombreuses tables/relations/vues qui sont créées.
    Du coup je me pose la question est-ce que tout est là ou pas ?

    L'erreur remonté semble venir de "definer" et étrangement c'est l'une des premières lignes du fichier SQL . ça m'étonne donc le script ne se soit pas arrêté dès la ligne d'erreur.

    qu'en pensez-vous ? toutes les relations sont-elles là et le definer ne serait exécuter qu'à la fin de l'import ?

  2. #2
    Membre éclairé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    avril 2009
    Messages
    1 210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : avril 2009
    Messages : 1 210
    Points : 780
    Points
    780
    Par défaut
    oups j'ai fait une erreur d'interprétation.

    l'instruction DEFINER= présente dans le script .sql est vers la toute fin et non pas au début du script .

    elle est présente à la toute fin au niveau de la création d'une VIEW 'les_resultats' qui n'existe pas dans ma restoration après l'import alors que la relation d'avant se nommant "mdl_workshopform_rubric_levels" existe bien.
    je pense donc avoir la réponse à ma question : l'importation s'est presque déroulée correctement sauf la partie finale avec la VIEW 'les résultats".
    Je connais pas le sens de DEFINER mais je me souviens que la vue "les résultats" avaient été crée "à la main" sur le serveur d'une manière basique "CREATE VIEW.." peut-être alors que l'utisateur n'était pas le bon à ce moment là....


    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    DROP TABLE IF EXISTS `mdl_workshopform_rubric_levels`;
    /*!40101 SET @saved_cs_client     = @@character_set_client */;
    /*!40101 SET character_set_client = utf8 */;
    CREATE TABLE `mdl_workshopform_rubric_levels` (
      `id` bigint(10) NOT NULL AUTO_INCREMENT,
      `dimensionid` bigint(10) NOT NULL,
      `grade` decimal(10,5) NOT NULL,
      `definition` longtext,
      `definitionformat` smallint(3) DEFAULT '0',
      PRIMARY KEY (`id`),
      KEY `mdl_workrubrleve_dim_ix` (`dimensionid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='The definition of rubric rating scales';
    /*!40101 SET character_set_client = @saved_cs_client */;
     
    --
    -- Dumping data for table `mdl_workshopform_rubric_levels`
    --
     
    LOCK TABLES `mdl_workshopform_rubric_levels` WRITE;
    /*!40000 ALTER TABLE `mdl_workshopform_rubric_levels` DISABLE KEYS */;
    /*!40000 ALTER TABLE `mdl_workshopform_rubric_levels` ENABLE KEYS */;
    UNLOCK TABLES;
     
    --
    -- Final view structure for view `les_resultats`
    --
     
    /*!50001 DROP TABLE IF EXISTS `les_resultats`*/;
    /*!50001 DROP VIEW IF EXISTS `les_resultats`*/;
    /*!50001 SET @saved_cs_client          = @@character_set_client */;
    /*!50001 SET @saved_cs_results         = @@character_set_results */;
    /*!50001 SET @saved_col_connection     = @@collation_connection */;
    /*!50001 SET character_set_client      = utf8mb4 */;
    /*!50001 SET character_set_results     = utf8mb4 */;
    /*!50001 SET collation_connection      = utf8mb4_unicode_ci */;
    /*!50001 CREATE ALGORITHM=UNDEFINED */
    /*!50013 DEFINER=`moodle`@`localhost` SQL SECURITY DEFINER */
    /*!50001 VIEW `les_resultats` AS ( bla bla bla la grosse requête de vue ici) */;
    /*!50001 SET character_set_client      = @saved_cs_client */;
    /*!50001 SET character_set_results     = @saved_cs_results */;
    /*!50001 SET collation_connection      = @saved_col_connection */;
    /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
     
    /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
    /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
    /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
    /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
    /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
    /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
    /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
     
    -- Dump completed on 2021-10-29 17:41:40

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    août 2006
    Messages
    16 734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    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 734
    Points : 33 855
    Points
    33 855
    Billets dans le blog
    14
    Par défaut
    Effectivement, ces DEFINER dans les vues et les procédures sont très chiants quand on veut restaurer.
    Les solutions que j'ai trouvées :
    1) Supprimer les instruction DEFINER à la main du script SQL.
    => Fastidieux quand il y en a un certain nombre et risque d'erreurs de syntaxe ensuite si on supprime mal.

    2) Restaurer avec le user objet du DEFINER, à condition bien sûr que ce soit le même DEFINER dans tout le script.
    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
    Membre éclairé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    avril 2009
    Messages
    1 210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : avril 2009
    Messages : 1 210
    Points : 780
    Points
    780
    Par défaut
    par chance, ce DEFINER est mis en queue de script (provenance d'un export de base) donc toutes les tables et données sont insérées avant l'erreur.
    Sauf la vue qui elle était manquante et que j'ai rajouté à la main (via une requête SQL dans phpmyadmin).

  5. #5
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    août 2006
    Messages
    16 734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    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 734
    Points : 33 855
    Points
    33 855
    Billets dans le blog
    14
    Par défaut
    Si vous avez une seule vue, ça va.

    Mais si vous avez plusieurs dizaines de vues et procédures, ça devient très fastidieux de les passer toutes à la main.

    Problème résolu pour vous alors !
    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 !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/10/2017, 18h18
  2. [11gR2] Clause WITH pour limiter le nombre de SELECT mais ECHEC TOTAL!
    Par Ikebukuro dans le forum SQL
    Réponses: 7
    Dernier message: 24/12/2016, 20h56
  3. Nombre total et partiel
    Par MRJBGO dans le forum Requêtes
    Réponses: 2
    Dernier message: 28/02/2013, 16h14
  4. Différence dégroupage total et partiel?
    Par johnkro dans le forum Dépannage et Assistance
    Réponses: 10
    Dernier message: 26/07/2006, 11h08
  5. importer des élémentsde table d'access en paradox
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 2
    Dernier message: 22/08/2005, 14h17

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