[英]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專用的...
您的問題與其他SO線程非常相似。 如何使用JDBC連接到Azure SQL 。 請嘗試從此處的同一期文章獲得解決方案。
希望能幫助到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.