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

MySQL Discussion :

Script SQL exception


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 138
    Par défaut Script SQL exception
    Bonjour à tous,
    Je ne sais pas si je suis sur la bonne page. J'ai crée et transformé un MCD en MLD sans problème. Mais lorsque j'essaie d'exécuter le script SQL. Je reçois le message:

    Code Shell : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.NullPointerException: Cannot invoke "java.lang.Boolean.booleanValue()" because the return value of "SQLGenerateur.Column.getPrimaryKey()" is null

    Et pourtant tout semble correct au niveau des clés primaires.

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 484
    Par défaut
    Bonjour,
    Avec si peu d'informations, il est tout simplement impossible de répondre.
    Il nous faudrait au moins le MCD, le MLD et surtout le script généré.

    tatayo.

  3. #3
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 513
    Par défaut
    Citation Envoyé par Javamar Voir le message
    Je reçois le message:

    Code Shell : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.NullPointerException: Cannot invoke "java.lang.Boolean.booleanValue()" because the return value of "SQLGenerateur.Column.getPrimaryKey()" is null
    Le problème vient de l'exécution de ton programme Java et (probablement) pas de la base elle-même. Ce message signifie que getPrimaryKey() en Java, a renvoyé null au lieu de renvoyer l'objet correspondant à ta clé primaire (soit son nom sous forme de String, soit un identifiant quelconque, soit un objet spécialement conçu pour, selon l'interface que tu utilise), ce qui fait échouer les appels subséquents. Il te faut maintenant comprendre pourquoi.

    Généralement, il y a deux grandes causes possibles :

    • Soit il n'y a effectivement pas de clé primaire du tout. Reste à savoir si c'est normal sur la colonne concernée ou pas. Si c'est le cas, c'est ton programme qu'il faut corriger, sinon c'est bien le schéma de ta base ;
    • Soit la méthode ne renvoie rien parce que les conditions préalables ne sont pas remplies. Cas typique : la connexion à la base a échoué mais tu n'as pas vérifié ce cas avant de poursuivre.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 138
    Par défaut
    Bonjour, merci beaucoup pour vos message. En fait, je travaille sur JMerise. J'ai essayé de remplacer mon modèle par un modèle très simple à 2 entités. Le même problème persiste. voici les images:

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 138
    Par défaut
    J'ai du mal à ajouter les images depuis mon ordinateur. Ca ne marche pas. J'ai testé avec un mcd très simple de Adhrent - effectue - Emprunt

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 138
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    Le problème vient de l'exécution de ton programme Java et (probablement) pas de la base elle-même. Ce message signifie que getPrimaryKey() en Java, a renvoyé null au lieu de renvoyer l'objet correspondant à ta clé primaire (soit son nom sous forme de String, soit un identifiant quelconque, soit un objet spécialement conçu pour, selon l'interface que tu utilise), ce qui fait échouer les appels subséquents. Il te faut maintenant comprendre pourquoi.

    Généralement, il y a deux grandes causes possibles :

    • Soit il n'y a effectivement pas de clé primaire du tout. Reste à savoir si c'est normal sur la colonne concernée ou pas. Si c'est le cas, c'est ton programme qu'il faut corriger, sinon c'est bien le schéma de ta base ;
    • Soit la méthode ne renvoie rien parce que les conditions préalables ne sont pas remplies. Cas typique : la connexion à la base a échoué mais tu n'as pas vérifié ce cas avant de poursuivre.
    C'est fort possible que le problème vienne de l'exécution du programme java avec JMerise parceque j'ai fait un test avec unmcd très simple à 2 entités.

  7. #7
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 486
    Par défaut
    Hello,

    Le problème se situe sans doute dans votre MLD (Modèle Logique de Données), pas dans le MCD.

    Étapes à suivre :

    1. Ouvrez votre MLD dans JMerise.
    2. Double-cliquez sur chaque table, une par une, pour ouvrir la fenêtre de ses propriétés.
    3. Dans la liste des colonnes (attributs) de la table, regardez attentivement la case à cocher « CP » (Clé Primaire).
    4. Voici l'action clé : Pour CHAQUE colonne de CHAQUE table, vous devez vous assurer que la case « CP » est soit explicitement cochée, soit explicitement décochée.
      • Si c'est une clé primaire, cochez-la.
      • Si ce n'est PAS une clé primaire, décochez-la.
    5. Validez les propriétés de chaque table.
    6. Relancez la génération du script SQL (Générer le SQL...). L'erreur NullPointerException devrait avoir disparu.


    Point de vigilance : Portez une attention particulière aux clés étrangères (celles avec un # ou (fk)). C'est souvent elles qui posent problème. Si une clé étrangère fait aussi partie de la clé primaire de la table actuelle (cas d'une association « porteuse »), sa case « CP » doit être cochée. Si c'est juste une clé étrangère « simple » (comme id_client dans une table Commande), sa case « CP » doit être décochée.

    Si le problème persiste :

    • Supprimez votre MLD.
    • Regénérez-le à nouveau depuis votre MCD (Générer le MLD...).
    • Avant de générer le SQL, refaites la vérification des cases « CP » sur ce nouveau MLD.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 138
    Par défaut
    Bonjour, je pense que tu touches du doigt le vrai problème. Dans le MLD, les clés primaires ne sont pas cochés (AI, INDENTIFIANT, UNIQUE) et lorsque je les coche et je reviens voir, elles sont décochées (elles se décochent toutes seules). Je ne sais pas comment y remédier. Je me demande si ça peut être du à la version de java que j'utilise.

  9. #9
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 486
    Par défaut
    Avant de changer de version de Java, essayez ceci, car c'est plus rapide :

    Exécuter en tant qu'administrateur


    Parfois, ce type de bug est lié à des problèmes de permissions (JMerise essaie d'écrire dans un fichier de configuration dans un dossier protégé).

    Faites un clic droit sur votre JMerise.jar (ou sur le .bat / raccourci si vous en avez un).

    Choisissez "Exécuter en tant qu'administrateur".

    Testez si le problème de case à cocher persiste.

    Si cela fonctionne, c'est que le problème était lié aux permissions. Si cela ne fonctionne pas, la solution de la version de Java reste la plus probable.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  10. #10
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 665
    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 665
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    Si une clé étrangère fait aussi partie de la clé primaire de la table actuelle (cas d'une association « porteuse »)
    C'est aussi le cas quand une entité-type dite "faible" est identifiée relativement à l'entité-type dite "forte" dont elle dépend

    Par exemple avec ce MCD (notez le (R) coté ligne de commande, symbolisant l'identification relative) :

    Nom : Sans titre.png
Affichages : 24
Taille : 34,1 Ko

    On obtient ce DDL pour la table LC :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CREATE TABLE LC_ligne_commande(
       CO_ident INT,
       LC_ligne TINYINT,
       LC_quantite DECIMAL(7,0) NOT NULL,
       AR_ident INT NOT NULL,
       PRIMARY KEY(CO_ident, LC_ligne),
       FOREIGN KEY(CO_ident) REFERENCES CO_commande(CO_ident),
       FOREIGN KEY(AR_ident) REFERENCES AR_article(AR_ident)
    );

  11. #11
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 486
    Par défaut
    C'est effectivement l'autre cas majeur où cela se produit
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

Discussions similaires

  1. Execution d'un script SQL
    Par Drahu dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/03/2004, 17h55
  2. Génération de script SQL avec les données
    Par borgfabr dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 05/03/2004, 14h57
  3. Exécuter un script SQL
    Par borgfabr dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/03/2004, 09h47
  4. create user, affectation droits et scripts sql
    Par hirochirak dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 03/02/2004, 11h21
  5. script SQL : affectation de variables
    Par Laura dans le forum Requêtes
    Réponses: 3
    Dernier message: 28/10/2003, 22h32

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