2011-10-04 72 views
0

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

$ 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') 

之后。它似乎挂在connections.py中的Connect()方法上。我不知道为什么这是或如何解决它。任何指导您可能有非常赞赏

====================================== ===更新==========================================

我让脚本运行时间更长,并且我另外尝试使用phpmyadmin以及本地计算机上的简单mysqli_connect()脚本进行连接。他们全部返回:

MySQL错误:2013年,“在‘读通信初始化数据’丢失连接到MySQL服务器,系统错误:0”

这似乎是问题的根源。是否有一些配置可以解决我的电脑问题?

+0

是否空闲的外面工作? –

+0

我从cmd窗口运行连接脚本,并得到相同的冻结结果。 – Pat

回答

1

正如当你试图找出其中的程序被冻结,你可以用strace的(strace的myprog.py)启动它也可以运行在PID的strace的(使用strace -p PIDNUM)

一般规则

例如,我的IPython中有12608一个pid,所以我跑

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 

我不知道这是如何工作与塔盒,但在一个正常的终端会话这是我将开始