英文:
Local java program unable to connect to local database
问题
以下是翻译好的内容:
我无法连接到Pg Admin 4上的数据库,尽管我能够使用Intellij中的DB Browser查询数据库。以下是我一直收到的错误。
这个相同的程序在尝试下载Python SQL工具后仍然可以连接到数据库,但出现了问题。我重新安装了postgresql,并按照原样创建了表,但现在无法连接到它们。
com.mysql.cj.jdbc.exceptions.CommunicationsException: 通信链接失败
最后一个成功发送到服务器的数据包距离现在0毫秒。驱动程序未从服务器收到任何数据包。
这里是尝试访问数据库的connectionclass.java。
public class ConnectionClass {
public Connection connection;
public Connection getConnection() {
String dbName = "users";
String userName = "postgres";
String password = "pass";
try {
Class.forName("com.mysql.cj.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:5432/" + dbName, userName, password);
} catch (Exception e) {
e.printStackTrace();
}
return connection;
}
}
最后,这是SQL查询工具的截图。
我已经检查了很多类似的错误,但它们似乎都涉及拼写错误。我可以将数据库更改为不正确的名称、所有者或密码,但错误仍然相同。我认为可能是驱动程序的问题,因为在程序中我使用了mysql-connector-java-8.0.20.jar,但数据库是由postgresql运行的。我尝试将jar替换为postgresql-42.2.17.jar,但也不起作用。
在这一点上,我正在考虑放弃这一切,去山上生活,所以任何帮助都将不胜感激。
编辑:将jar文件复制到lib文件夹中,在使用此方法来解压缩它之前是不起作用的。可能需要尝试几次,但我的最终起作用了。非常感谢!如果我有声望点数,我会给你点赞。
英文:
I am unable to connect to a database on Pg Admin 4; despite being able to query the database using DB Browser in intellij. Below is the error I keep getting.
This same program could connect to the database however after trying to download a python sql tool something went wrong. I re-installed postgresql and created the tables as they were but I now can't connect to them.
com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
Here is the connectionclass.java which tries to access the database.
public class ConnectionClass {
public Connection connection;
public Connection getConnection() {
String dbName = "users";
String userName = "postgres";
String password = "pass";
try {
Class.forName("com.mysql.cj.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:5432/" + dbName, userName, password);
} catch (Exception e) {
e.printStackTrace();
}
return connection;
}
}
Finally I have a screengrab of the sql query tool.
I've checked dozens of errors like this but they all seem to involve misspellings. I can change the database to an incorrect name, owner, or password but the error remains the same. I thought it might be the driver as I use mysql-connector-java-8.0.20.jar in the program but postgresql is what runs the database. I tried replacing the jar with postgresql-42.2.17.jar but that dosn't work either.
At this point I'm considering scrapping the whole thing and going to live on a mountain so any help is appreciated.
EDIT: Coping the jar into lib folder does not work until you use the method outlined here to unpack it. Might take a few tries but mine finally works. Thank you so much! If I had any reputation points I'd upvote.
答案1
得分: 1
下载适当的驱动程序
https://jdbc.postgresql.org/download.html
在您的程序中加载“正确”的驱动程序“org.postgresql.Driver”,就像您为mysql做的那样,但这次请这样做:
Class.forName("org.postgresql.Driver");
然后使用正确的协议“jdbc:postgresql:”进行连接:
Connection conn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/" + dbName, userName, password);
英文:
Download the appropriate driver
https://jdbc.postgresql.org/download.html
load the "correct" driver ""org.postgresql.Driver" in your program as you do for mysql, do this instead
Class.forName("org.postgresql.Driver");
and connect with the correct protocol "jdbc:postgresql:"
Connection conn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/" + dbName, userName, password);
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论