Java SQL “ERREUR: la Relation ”Table_Name“ n'existe pas”
J'essaie de connecter netbeans pour ma base de données postgresql. La connexion semble avoir fonctionné comme je ne reçois pas toutes les erreurs ou à des exceptions quand il vient à la connexion, les méthodes telles que getCatalog() retourne également les réponses correctes.
Mais lorsque j'essaie d'exécuter une simple instruction SQL, je reçois le message d'erreur "ERREUR: la relation "TABLE_NAME" n'existe pas", où TABLE_NAME est une de mes tables qui N'existent pas dans la base de données. Voici mon code:
Statement stmt = con.createStatement();
ResultSet rs;
String query = "SELECT * FROM clients";
rs = stmt.executeQuery(query);
Je pensais que netbeans est peut-être pas à trouver la table, car il ne regarde pas dans le schéma par défaut (public), est-il un moyen de définir le schéma en java?
EDIT: Mon code de connexion. Le nom de base de données est Cinemax, quand je quitte l'instruction code, je n'ai pas d'erreurs.
String url = "jdbc:postgresql://localhost:5432/Cinemax";
try{
try {
Class.forName("org.postgresql.Driver");
} catch (ClassNotFoundException cnfe) {
System.err.println("Couldn't find driver class:");
cnfe.printStackTrace();
}
Connection con = DriverManager.getConnection( url,"postgres","desertrose147");
- Ne pouvez-vous pas ré-écrire le sql de cette façon?
SELECT * FROM <schem_name>.clients
- Vous n'êtes pas en montrant comment vous connecter au serveur de base de données. Je soupçonne @CoolBeans est correct au-dessus ou très proche. Votre table est dans un schéma différent (ce qui permettra de corriger) ou dans une autre base de données que celle que vous spécifiez lors de la connexion.
- J'adore... pourriez-vous nous montrer la VÉRITABLE erreur que vous avez? Je ne pense pas que la base de données est en train de dire "relation TABLE_NAME..." lorsque vous exécutez "select * from clients".
- J'ai essayé, mais j'obtiens le même message d'erreur "erreur: la relation "public.les clients" n'existe pas" (de même pour tous les autres une de mes tables). le public est mon seul schéma, c'est donc aussi le schéma par défaut. Merci pour l'aide pour l'instant.
- Ensemble log_min_duration_statement à 0 dans postgresql.conf, redémarrez la base de données, exécutez l'application et vérifiez dans le postgresql journaux de ce qu'est la véritable requête qui est envoyée à la base de données. Et encore une chose... êtes-vous sûr à 100% que vous avez la table là-bas? Pouvez-vous vous connecter à cette base de données à l'aide de psql/pgadmin et exécuter la requête?
Vous devez vous connecter pour publier un commentaire.
Je soupçonne que vous avez créé la table à l'aide de guillemets doubles par exemple à l'aide
"Clients"
ou une combinaison de majuscules/minuscules et à cet effet, le nom de la table est sensible à la casse maintenant.Que fait la déclaration
retour?
Si le nom de la table qui est retourné n'est pas minuscule que vous avez à utiliser des guillemets lorsque l'on se réfère à elle, quelque chose comme ceci:
Vous pouvez vérifier ces possibilités:
Peut-être l'une de ces travaux.
Outre CoolBeans suggestion, vous pouvez également vous connecter à la db en tant qu'un autre utilisateur qui ne dispose pas d'autorisation sur la db ou un schéma. Pouvez-vous montrer à la chaîne de connexion?
Drôle, c'est que je vivais la même chose que j'avais juste commencé sur netbeans et postgressql db, et l'erreur a été corrigée après avoir constaté que le problème était que mes tables dans postgressql avait des majuscules dans ma convention de nommage qui moi et mes jdbc de l'instruction de la requête pour INSÉRER a défaut de trouver la table. Mais après le changement de nom de mes tables dans la base de données et de fixation de la colonne des noms de suis bon pour aller. Espérons que cela aide.