2011-09-30 128 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