簡體   English   中英

JDBC斷管Mac

[英]JDBC Broken Pipe Mac

這很奇怪,但是每次嘗試通過JDBC連接到SQL Azure時,我都會反復遇到此問題。

環境:Eclipse Oxygen,Mac Sierra 10.12.6,JDK 1.8.0_141

我看到以下錯誤:

Cannot create PoolableConnectionFactory (Broken pipe (Write failed) ClientConnectionId:ac4ed2ba-4563-4f3b-9bcc-441bff9e45e1)

我正在嘗試以最基本的方式通過context.xml創建連接:

 <Resource name="jdbc/sqlazure"
auth="Container"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
type="javax.sql.DataSource"
maxIdle="30"
username="<user>
password="<password>
url="jdbc:sqlserver://<dbname>.database.windows.net:1433;database=<db>;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;"
removeAbandonedTimeout="30"
logAbandoned="true" /> 

在我的servlet init()中,我得到這樣的數據源:

 ds = (DataSource) new InitialContext().lookup("java:comp/env/jdbc/sqlazure");

並且它返回非null。 但是,當我嘗試建立連接時:

Connection con = ds.getConnection()

它掛在這里,然后因管道錯誤而超時。 我還在Azure門戶中將適當的IP地址列入了白名單。

我的SQLPro客戶端能夠連接到數據庫並查看其內容,因此用戶名/密碼和連接字符串應該不會有任何問題。

我已經確認我的主機名設置正確。 使用:

scutil --get HostName

我已經嘗試了所有我能想到的東西,但還是沒有運氣。 我開始認為OSX上的Java運行時存在一些問題。 有人有想法么 ?

編輯:我在Windows環境和JDK上使用了完全相同的文件,但沒有看到此問題。 所以我相信這是Mac專用的...

您可能需要安裝Homebrew和Maven才能使其正常工作。 請按照此處提供的說明進行操作。

希望這可以幫助。

問候,

阿爾貝托·莫里洛(Alberto Morillo)

您的問題與其他SO線程非常相似。 如何使用JDBC連接到Azure SQL 請嘗試從此處的同一期文章獲得解決方案。

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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