2011-09-30 159 views
2

我想從clojure連接到mysql數據庫。我使用取自示例代碼: http://corfield.org/blog/post.cfm/connecting-clojure-and-mysql但我得到這個錯誤:從clojure連接到mysql服務器

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 
Last packet sent to the server was 0 ms ago. 

MySQL服務器被綁定到127.0.0.1:3306。將localhost更改爲127.0.0.1 in:subname不起作用。我已經設置了mysql服務器來記錄所有的調試信息,甚至沒有看到連接。我在這裏做錯了什麼?

+1

你確定你的MySQL服務器配置爲接受網絡連接嗎? IIRC某些服務器配置只允許使用unix文件套接字而不是網絡連接。您可以通過運行mysqlclient -h $ yourhostname ....來測試它。 –

回答

0

我可以使用mysql -h 127.0.0.1連接到分貝。但如果我將127.0.0.1更改爲localhost,則無法連接。 my.cnf包含:bind-address = 127.0.0.1,正如我上面寫的,在:subname中改爲127.0.0.1並沒有幫助。訣竅是把mysqld : ALL : ALLOW放在/etc/hosts.allow中。我不知道爲什麼需要這樣做,尤其是當所有其他聯繫MySQL服務器的服務都沒有它的時候。

+0

回答我自己的問題時,似乎其他應用程序通過unix套接字連接到mysqld,在這種情況下TCP封裝器不被使用,因爲這不是TCP/IP網絡連接。另一方面,jdbc驅動程序使用TCP/IP連接到主機:端口,以便適用包裝器庫限制。 – kliron