簡體   English   中英

在 osx 上使用 jdbc 將 java 連接到 mysql

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM