【发布时间】:2011-04-23 18:35:46
【问题描述】:
我正在尝试将 netbeans 连接到我的 postgresql 数据库。连接似乎有效,因为我在连接时没有收到任何错误或异常,getCatalog() 等方法也返回正确答案。
但是当我尝试运行一个简单的 SQL 语句时,我收到错误“错误:关系“TABLE_NAME”不存在”,其中 TABLE_NAME 是我在数据库中确实存在的任何一个表。这是我的代码:
Statement stmt = con.createStatement();
ResultSet rs;
String query = "SELECT * FROM clients";
rs = stmt.executeQuery(query);
我在想 netbeans 可能找不到表,因为它没有在默认模式(公共)中查找,有没有办法在 java 中设置模式?
编辑:我的连接代码。数据库名称是Cinemax,当我省略语句代码时,我没有收到任何错误。
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");
【问题讨论】:
-
不能这样重写sql吗?
SELECT * FROM <schem_name>.clients -
您没有显示如何连接到数据库服务器。我怀疑@CoolBeans 在上面是正确的或非常接近。您的表与您在连接时指定的模式不同(以上将修复)或在另一个数据库中。
-
我喜欢...你能告诉我们你真正的错误吗?当您执行“select * from clients”时,我认为数据库不会说“relation TABLE_NAME ...”。
-
我试过了,但我得到了同样的错误,“错误:关系“public.clients”不存在”(我的任何其他表都一样)。 public 是我唯一的架构,所以它也是默认架构。感谢您迄今为止的帮助。
-
在 postgresql.conf 中将 log_min_duration_statement 设置为 0,重新启动数据库,运行应用程序并在 postgresql 日志中检查发送到数据库的真正查询是什么。还有一件事......你100%确定你有桌子吗?你可以使用 psql/pgadmin 连接到这个数据库并在那里执行查询吗?
标签: java sql postgresql quoted-identifier