[英]connect java to mysql using jdbc on osx
所以我將 MySQL Connector/J 5.1.16 添加到我的項目的構建路徑中。 I'm using the default OSX Java package and MAMP Pro 1.9.4 with MySQL 5.1.44 and Eclipse.
我已經使用以下 function 設置了一個簡單的 java 應用程序:
private static String dbUrl = "jdbc:mysql://127.0.0.1:3306/mpp";
private static String dbUsername = "root";
private static String dbPassword = "root";
private Statement statement = null;
private void dbConnect() {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection(dbUrl, dbUsername, dbPassword);
statement = connection.createStatement();
} catch(SQLException e) {
System.err.print(e.getMessage() + " ARGH!");
} catch(Exception e) {
System.err.print(e.getMessage() + " FUUUUUUUUUU!");
}
}
當我運行它時,我收到以下錯誤:
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. ARGH!
我用谷歌搜索了大約一個小時,但沒有成功。 有想法該怎么解決這個嗎? JDBC 驅動程序應該沒問題,我測試了一下。
編輯
我嘗試通過控制台運行它
SnowCave:src stefanschipor$ java -cp $CLASSPATH test
我得到與上面相同的 output
好吧,這只是愚蠢的。 :)
您已經打開 MAMP, go 到服務器 > MySQL 並取消選中默認選中的“僅允許本地訪問”。 這很奇怪,因為我正在做的是本地的,但無論如何......
我的程序似乎可以工作,@JamesA 建議的命令也產生了預期的輸出!
噓!
您確定 MySQL 正在端口 3306 上運行嗎?
如果 mysql 守護程序正在偵聽端口 3306 lsof -i:3306
應該返回:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 7616 username 10u IPv6 0x1fbf6940 0t0 TCP *:mysql (LISTEN)
使用nc localhost 3306
直接連接到端口應該返回:
H
5.5.969]G.Mw4??9cfUY?k!^:D&mysql_native_password
其中5.5.969
是 mysql 版本號。
您還可以嘗試使用DbVisualizer之類的工具來測試您的連接 URL。
您需要使用端口 localhost:8889 或您在 MAMP > Settings > Ports > MySQL-Port 中找到的任何端口。 那么你的連接就會成功!
只是因為您的mysql
服務沒有運行...只需從系統首選項運行mysql
服務,或者如果您使用brew
run brew services start mysql
安裝它
我在 OSX 上也有這個神秘的錯誤,並且在第一次發生錯誤時沒有找到任何解決方案。 在我的情況下,如果在開發過程中修改了數據庫結構或刪除/創建了表(MySQL 作為 JBoss 的數據源),就會發生這種情況。 在所有情況下,如果我在修改后關閉 MySQL 並在 JBoss 啟動之前重新啟動它,我可以避免錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.