Mysql
Web 應用程序無法連接到數據庫
我有一個使用 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 上偵聽,並且上面的“正確使用者”具有所有必要的權限(在 localhost和127.0.0.1 上)。
有誰知道“無法打開連接”的任何不太常見的原因?
在我的情況下,事實證明另一個管理員拒絕
ALL: ALL
進入hosts.deny
並且hosts.allow
是空的。放置解決mysqld: 127.0.0.1
了hosts.allow
問題。作為參考,以下是所有可能導致錯誤的原因,例如我所描述的錯誤:
- 本地主機可能無法按照
hosts.allow
和連接hosts.deny
- JDBC 驅動程序對 tomcat 不可用
- 數據庫配置為不允許網路連接
- 數據庫未執行
在每種情況下,完整的堆棧跟踪都會略有不同。與此處列出的其他原因相比,缺少驅動程序在堆棧跟踪中將更加明顯。
請建議上述列表中缺少的任何項目。