![](/img/trans.png)
[英]Not able to connect to mysql database using Jython with mysql.connector module
[英]Not being able to connect to MySql database
我過去在數據庫方面遇到了更多問題:它無法始終獲得連接。 數據庫在網站(webhosting)上運行,我嘗試從我自己的PC訪問它。 這里出了問題,如果我從localhost訪問localhost然后它可以正常工作。
我在Java中com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.
錯誤: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.
我不知道為什么,我使用類似的結構,如下所示:
public class SQL {
private final static String USERNAME = "";
private final static String PASSWORD = "";
private final static String URL = "jdbc:mysql://www.fvheeswijk.nl:3306/p28004_bf4";
private static Connection cachedConnection;
private static void createConnection() {
cachedConnection = null;
Properties connectionProperties = new Properties();
connectionProperties.put("user", USERNAME);
connectionProperties.put("password", PASSWORD);
try {
cachedConnection = (Connection) DriverManager.getConnection(URL, connectionProperties);
} catch (SQLException ex) {
Logger.getLogger(SQL.class.getName()).log(Level.SEVERE, null, ex);
}
}
public static Connection getConnection() {
if (cachedConnection == null) {
createConnection();
}
return cachedConnection;
}
}
數據當然是空白的。
然后我試着ping我的網站,一切都很好。
后來我試圖ping數據庫www.fvheeswijk.nl:3306
,但Windows cmd無法找到它。 然后我嘗試通過瀏覽器訪問它(這甚至有意義嗎?),但我得到了一些消息“無序接收的數據包”。 我已經(以前的方式)將我的PC(路由器/網絡)主機名添加到數據庫的允許主機列表中。
有任何線索或建議出了什么問題?
編輯:現在我得到這個,可能會解釋一下...... java.sql.SQLException: null, message from server: "Host '541DB0AA.cm-5-6c.dynamic.ziggo.nl' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'"
主要問題是您打開了太多連接,可能永遠不會關閉它們,或者它們被應用程序服務器(或運行此應用程序的任何位置)關閉。 這可以從你帖子中的兩個事實中得知:
private static Connection cachedConnection
。 數據庫連接不能手動緩存,而應僅在需要時檢索,並在使用后關閉 。 com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.
此錯誤非常明確,您嘗試使用已關閉的連接。 此外,您手動打開連接,這里注意到:
cachedConnection = (Connection) DriverManager.getConnection(URL, connectionProperties);
要解決所有這些問題,您應該轉到數據庫連接池 。 簡而言之,連接池將打開一堆物理數據庫連接,並使它們處於休眠狀態,並按需喚醒連接,然后在關閉連接時,而不是關閉物理連接,它將返回到睡眠狀態,從而節省了打開新連接的時間。
更多信息:
關於上次編輯,似乎需要關閉一些與數據庫的連接。 您應該殺死其中一些並嘗試使用數據庫池再次連接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.