2014-11-13 54 views
1

我不知道PYTHON,但我必须在Linux(CentOS6)服务器上以cronjob身份运行脚本,并且出现一些问题。Python CRON找不到MySQL驱动程序

如果我从浏览器(http://xx.xx/xx.py)或bash运行脚本,该脚本运行良好。在这两种情况下,它都会加载模块并更新MySql数据库。

的问题是,当它被科雷运行:

/usr/local/bin/python2.7 /home/itsme/cron/demo.py >> /家庭/ ITSME/cron的/日志/上的错误日志cron_log.log

我:

Failed to connect to MySql DB using connect string- DRIVER={MySQL};SERVER=localhost;DATABASE=dbname;UID=admin;PWD=*******# .Reconnect Attempt# 1 

<class 'pyodbc.Error'> ('IM002', '[IM002] [unixODBC][Driver Manager]Data source name not found, and no default driver specified (0) (SQLDriverConnect)') 

这意味着MySQL驱动没有找到。所以我尝试: #ODBCINST -j

unixODBC 2.2.14 
DRIVERS............: /etc/odbcinst.ini 
SYSTEM DATA SOURCES: /etc/odbc.ini 
FILE DATA SOURCES..: /etc/ODBCDataSources 
USER DATA SOURCES..: /root/.odbc.ini 
SQLULEN Size.......: 8 
SQLLEN Size........: 8 
SQLSETPOSIROW Size.: 8 

VI如果我从剧本打印sys.path中我/etc/odbcinst.ini

# Example driver definitions 

# Driver from the postgresql-odbc package 
# Setup from the unixODBC package 
[PostgreSQL] 
Description  = ODBC for PostgreSQL 
Driver   = /usr/lib/psqlodbc.so 
Setup   = /usr/lib/libodbcpsqlS.so 
Driver64  = /usr/lib64/psqlodbc.so 
Setup64   = /usr/lib64/libodbcpsqlS.so 
FileUsage  = 1 


# Driver from the mysql-connector-odbc package 
# Setup from the unixODBC package 
[MySQL] 
Description  = ODBC for MySQL 
Driver   = /usr/lib/libmyodbc5.so 
Setup   = /usr/lib/libodbcmyS.so 
Driver64  = /usr/lib64/libmyodbc5.so 
Setup64   = /usr/lib64/libodbcmyS.so 
FileUsage  = 1 

 ['/home/itsme/cron/', '/usr/local/lib/python2.7/site-packages/setuptools-7.0-py2.7.egg', 
    '/usr/local/lib/python2.7/site-packages/pip-1.5.6-py2.7.egg', 
'/usr/local/lib/python27.zip', '/usr/local/lib/python2.7', 
'/usr/local/lib/python2.7/plat-linux2', '/usr/local/lib/python2.7/lib-tk', 
'/usr/local/lib/python2.7/lib-old', '/usr/local/lib/python2.7/lib-dynload', 
'/usr/local/lib/python2.7/site-packages', '/home/itsme/cron/src', '/usr/lib'] 

为什么CRON无法找到MySQL驱动程序?

感谢您的任何帮助。

回答

2

我认为你在你的cron环境中缺少一些导致这个问题的环境变量。

在你的终端,从那里这个脚本工作,运行以下命令

printenv > env.normal.text 

现在,运行它输出像下面

* * * * * * printenv > env.cron.text 

环境变量现在只是比较虚拟cron作业两个用于相关的缺失变量。将它设置在你的cron中。

+0

谢谢!我看到几个不同之处。也许最重要的是:**用户**,** PWD **,** OLDPWD **,**应**,**主页**请注意我在MySql Ddiver上收到错误,而不是脚本。我如何更新它? – Uncoke