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

MkFramework Discussion :

Un bug avec les noms de base de données


Sujet :

MkFramework

  1. #1
    Membre habitué
    Homme Profil pro
    Responsable SAV
    Inscrit en
    Mars 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable SAV

    Informations forums :
    Inscription : Mars 2010
    Messages : 122
    Points : 128
    Points
    128
    Par défaut Un bug avec les noms de base de données
    Depuis la version mkframework_v4_102_0_r249,
    je n'ai pas créé un model pour mon projet.
    Je me contentais jusqu'à maintenant d'améliorer les scripts et d'ajouter
    des fonctionnalités.
    Aujourd'hui, je voulais voir comment utiliser Mootools
    avec ce mkframework, j'ai donc créé une table de test.
    Mes tables ont toujours commencé avec mk_NOMTABLE
    et après création des modules CRUD,
    quand j'affiche la page index du module, j'ai l'erreur ci-dessous :
    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
    18
    19
    20
     
    include(../module/mk/c/main.php): failed to open stream: No such file or directory
    #0 F:\xampp-1835VC11\htdocs\mkframework_v4_107_1_r267\data\genere\mkmootools\plugin\plugin_autoload.php(16): exception_error_handler(2, 'include(../modu...', 'F:\\xampp-1835VC...', 16, Array)
    #1 F:\xampp-1835VC11\htdocs\mkframework_v4_107_1_r267\data\genere\mkmootools\plugin\plugin_autoload.php(16): plugin_autoload::autoload()
    #2 [internal function]: plugin_autoload::autoload('module_mk_c')
    #3 F:\xampp-1835VC11\htdocs\mkframework_v4_107_1_r267\lib\framework\class_root.php(228): spl_autoload_call('module_mk_c')
    #4 F:\xampp-1835VC11\htdocs\mkframework_v4_107_1_r267\data\genere\mkmootools\public\index.php(47): _root->run()
    #5 {main}
     
    Detail:
    #0 F:\xampp-1835VC11\htdocs\mkframework_v4_107_1_r267\data\genere\mkmootools\plugin\plugin_autoload.php (16)
    exception_error_handler( , 'include(../module/mk/c/main.php): failed to open stream: No such file or directory' , 'F:\xampp-1835VC11\htdocs\mkframework_v4_107_1_r267\data\genere\mkmootools\plugin\plugin_autoload.php' , , Array ( [sClass] => module_mk_c [tab] => Array ( [1] => mk [2] => c ) ) )
    #1 F:\xampp-1835VC11\htdocs\mkframework_v4_107_1_r267\data\genere\mkmootools\plugin\plugin_autoload.php (16)
    plugin_autoload :: autoload( )
    #2 plugin_autoload :: autoload( 'module_mk_c' )
    #3 F:\xampp-1835VC11\htdocs\mkframework_v4_107_1_r267\lib\framework\class_root.php (228)
    spl_autoload_call( 'module_mk_c' )
    #4 F:\xampp-1835VC11\htdocs\mkframework_v4_107_1_r267\data\genere\mkmootools\public\index.php (47)
    _root -> run( )
    #5 {main}
    C'est en cherchant dans le vide que j'ai remarqué qu'avec les dernières versions
    de mkframework, il n'est plus possible d'avoir des tables du style mk_NOMTABLE
    alors que les anciennes modules importées dans la dernière version de mkframework
    fonctionnent très bien.

    Pourriez-vous faire une test avec ces deux types de tables, peut-être que l'erreur
    vient d'ailleurs (voir requètes sql ci-dessous).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    CREATE TABLE IF NOT EXISTS `mkc` (
    `temps_id` int(11) NOT NULL,
      `email` varchar(120) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
      `motdepasse` char(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT ''
     
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
     
    ALTER TABLE `mkc`
     ADD PRIMARY KEY (`temps_id`);
     
     
    ALTER TABLE `mkc`
    MODIFY `temps_id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=1;
    La page suivante s'affiche correctement
    http://localhost/mkframework_v4_107_...nav=mkc::index


    Alors qu'avec la même table formalisée
    la page suivante donne l'erreur précédente
    http://localhost/mkframework_v4_107_...av=mk_c::index

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    CREATE TABLE IF NOT EXISTS `mk_c` (
    `temps_id` int(11) NOT NULL,
      `email` varchar(120) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
      `motdepasse` char(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT ''
     
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
     
    ALTER TABLE `mk_c`
     ADD PRIMARY KEY (`temps_id`);
     
     
    ALTER TABLE `mk_c`
    MODIFY `temps_id` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=1;
    Cordialement
    Images attachées Images attachées  

  2. #2
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 098
    Points
    19 098
    Billets dans le blog
    17
    Par défaut
    Bonjour,
    Ce n'est pas un bug au niveau de la table, mais du chargement du module.
    En effet, depuis la dernière version du framework, on peut organiser les modules dans des repertoires, et on utilise le sigle "_" pour indiquer l'arborescence, par exemple:
    module private_toto, sera dans module/private/toto

    Pour votre problème, deux solutions:
    - enlever les underscore du module
    - creer un repertoire mk dans module et mettre ce module à l'interieur, en renommant le repertoire (enlevant le mk_)
    - desactiver cette nouvelle fonctionnalité

    Pour desactiver cette foncttionnalité, editer le fichier public/index.php pour activer l'ancien autoloader
    il faut commenter ces deux lignes
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    include($tIni['path']['plugin'].'/plugin_autoload.php');
    spl_autoload_register(array('plugin_autoload','autoload'));
    et ajouter une ligne:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    spl_autoload_register(array('_root','autoload'));

  3. #3
    Membre habitué
    Homme Profil pro
    Responsable SAV
    Inscrit en
    Mars 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable SAV

    Informations forums :
    Inscription : Mars 2010
    Messages : 122
    Points : 128
    Points
    128
    Par défaut
    Bonjour,

    Merci encore pour la rapidité de la réponse,
    pour mon cas, je vais ici désactiver la nouvelle fonctionnalité car dans un hébergement mutualisé,
    préfixer les noms des tables, me permet de voir d'un simple coup d'oeil, les tables d'une application,
    car souvent le nombre de bases de données n'est pas illimité comme en local.

    Cordilement

  4. #4
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 098
    Points
    19 098
    Billets dans le blog
    17
    Par défaut
    Attention: la mise à jour concerne le nom des modules et non celui des tables
    Lorsque le builder génère un module CRUD, par défaut il utilise le nom de la table, qui, comportant un underscore a engendré ce soucis.
    Mais vous avez la main au moment de la génération du CRUD pour changer le nom du module généré

  5. #5
    Membre habitué
    Homme Profil pro
    Responsable SAV
    Inscrit en
    Mars 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable SAV

    Informations forums :
    Inscription : Mars 2010
    Messages : 122
    Points : 128
    Points
    128
    Par défaut
    Bonjour,
    J'avais compris, mais merci pour cette précision, cela enlèvera toute ambiguïté.

    Cordialement

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 11/06/2013, 20h36
  2. PB avec les champ numerique base de données access
    Par chakir76 dans le forum Bases de données
    Réponses: 7
    Dernier message: 28/01/2013, 07h19
  3. [MySQLClient] Lister les noms des bases de données
    Par devpsp dans le forum Bases de données
    Réponses: 17
    Dernier message: 02/01/2008, 19h03
  4. Réponses: 7
    Dernier message: 04/11/2004, 12h20
  5. [CR9] Bug avec les champs à valeur vide ?
    Par Djob dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 15/07/2003, 21h21

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