【发布时间】:2017-06-08 14:40:47
【问题描述】:
我有一个通过pyMySQL 连接到 MySQL 数据库的脚本。
当我从控制台手动执行它时,它就像一个魅力,但是当我运行这个 cronjob 时会给出这个输出:
@reboot sudo python3 /var/www/html/ls/src/AppBundle/Command/crawl.py true > /tmp/listener.log 2>&1
结果:
Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/pymysql/connections.py", line 890, in connect
(self.host, self.port), self.connect_timeout)
File "/usr/lib/python3.5/socket.py", line 711, in create_connection
raise err
File "/usr/lib/python3.5/socket.py", line 702, in create_connection
sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused
这是为什么呢?我遵循了所有这些https://stackoverflow.com/a/15684341/1092632 没有任何成功。
感谢任何提示!
编辑
我尝试过的事情:
connect = pymysql.connect(host=constants.HOST,
user=constants.USERNAME,
passwd=constants.PASSWORD,
db=constants.DATABASE,
charset='utf8mb4',
port=constants.PORT,
unix_socket=constants.SOCKET,
cursorclass=pymysql.cursors.DictCursor)
常量.py
># MySQL #
HOST = '127.0.0.1' // Localhost, 127.0.0.1 and public IP of Server (having bind to 0.0.0.0
USERNAME = 'admin'
PASSWORD = 'XXX'
DATABASE = 'ls_base'
PORT = '3306' // With and without ''
SOCKET = '/var/run/mysqld/mysqld.sock' // File exists
【问题讨论】:
-
我猜您的客户端正在尝试连接到错误的套接字或端口,请参阅stackoverflow.com/questions/6885164/…
-
既不添加
unix_socket='/var/run/mysqld/mysqld.sock',(文件存在)也不专门添加正确的端口似乎可以解决问题。套接字将错误更改为[Errno 2] No such file or directory)。 -
您使用什么主机名进行连接?使用“localhost”将调用套接字文件连接,使用“127.0.0.1”将调用网络连接。
标签: python mysql sockets cron pymysql