Python MySQLdb冻结连接尝试

时间:2011-10-04 14:43:17

标签: python freeze mysql-python

我正在尝试使用Python中的MySQLdb连接到我在Pagoda Box应用程序上建立的数据库。首先,我打开Pagoda隧道到数据库:

$ pagoda tunnel -a <app-name>

并返回隧道已成功打开,连接在127.0.0.1:3307上可用。我在Python IDLE中运行以下命令:

import MySQLdb
conn = MySQLdb.connect(host = '127.0.0.1', port=3307,user='user',passwd='pass')

之后,IDLE屏幕冻结(即它在无限循环上卡在当前命令上)。它似乎挂在了connections.py中的Connect()方法上。我不确定为什么会这样或如何解决它。非常感谢您的任何指导

========================================= UPDATE ===== =====================================

我让脚本运行时间更长,我还尝试使用phpmyadmin连接,以及在本地计算机上使用简单的mysqli_connect()脚本。所有人都回来了:

MySQL错误:2013年,“在'读取初始通信数据包'时失去与MySQL服务器的连接',系统错误:0”

这似乎是问题的根源。我可以在PC上修复一些配置来消除这个问题吗?

1 个答案:

答案 0 :(得分:0)

作为一般规则,每当你试图找出一个程序停滞的地方时,你可以用strace(strace myprog.py)启动它,或者你可以在pid上运行一个strace(strace -p pidnum)

例如,我的ipython的pid为12608,所以我运行

    strace -po 12608

然后我跑

    con = MySQLdb.connect('xxx.xxx.xxx.xxx', 'user', '', 'database');

我看到strace产生了成功的连接

    setsockopt(4, SOL_SOCKET, SO_RCVTIMEO, "\2003\341\1\0\0\0\0\0\0\0\0\0\0\0\0", 16) = 0
    setsockopt(4, SOL_SOCKET, SO_SNDTIMEO, "\2003\341\1\0\0\0\0\0\0\0\0\0\0\0\0", 16) = 0
    setsockopt(4, SOL_IP, IP_TOS, [8], 4)   = 0
    setsockopt(4, SOL_TCP, TCP_NODELAY, [1], 4) = 0
    setsockopt(4, SOL_SOCKET, SO_KEEPALIVE, [1], 4) = 0

我不确定Pagoda Box如何使用,但在正常的终端会话中,这是我要开始的地方