Mysql

Web 應用程序無法連接到數據庫

  • July 21, 2011

我有一個使用 Hibernate 作為 JPA 提供程序訪問 MySQL 的 Web 應用程序。儘管在我的開發平台上一切都很好,但是一旦我將 WAR 部署到我的伺服器上,我就會收到以下錯誤:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.JDBCConnectionException: Cannot open connection

開發機器執行 Ubuntu 10.10 和伺服器 10.04;兩者都使用提供的 MySQL 包和 Apache(不是 Ubuntu)的 tomcat6。我已經多次檢查數據庫是否正在執行、憑據是否正確以及驅動程序是否可用。

我在 tomcat 的 context.xml 中有這個資源定義:

<Resource
   name="jdbc/phenome_repository"
   auth="Container"
   type="javax.sql.DataSource"
   username="correctUserName"
   password="correctPassword"
   driverClassName="com.mysql.jdbc.Driver"
   url="jdbc:mysql://localhost/correctDatabaseName"    
/>

由於 Web 應用程序在本地工作,我相信它的配置是正確的(它的 web.xml 中有一個資源引用)。至於 MySQL,它被配置為在 127.0.0.1 上偵聽,並且上面的“正確使用者”具有所有必要的權限(在 localhost127.0.0.1 上)。

有誰知道“無法打開連接”的任何不太常見的原因?

完整的堆棧跟踪

在我的情況下,事實證明另一個管理員拒絕ALL: ALL進入hosts.deny並且hosts.allow是空的。放置解決mysqld: 127.0.0.1hosts.allow問題。

作為參考,以下是所有可能導致錯誤的原因,例如我所描述的錯誤:

  • 本地主機可能無法按照hosts.allow和連接hosts.deny
  • JDBC 驅動程序對 tomcat 不可用
  • 數據庫配置為不允許網路連接
  • 數據庫未執行

在每種情況下,完整的堆棧跟踪都會略有不同。與此處列出的其他原因相比,缺少驅動程序在堆棧跟踪中將更加明顯。

請建議上述列表中缺少的任何項目。

引用自:https://serverfault.com/questions/291719