2014-11-13 4 views
1

PYTHON을 모르지만 Linux (CentOS6) 서버에서 cronjob으로 스크립트를 실행해야하는데 문제가 있습니다.Python CRON이 MySQL 드라이버를 찾지 못했습니다.

브라우저 (http://xx.xx/xx.py) 또는 bash에서 스크립트를 실행하면 스크립트가 제대로 작동합니다. 두 경우 모두 모듈을로드하고 MySql DB를 업데이트합니다. 이 CRON에 의해 실행되는 경우

문제는 다음과 같습니다

/usr/local/bin/python2.7의 /home/itsme/cron/demo.py >>/홈/itsme/크론/오류 로그에

cron_log.log 로그는/내가 가진 : MySQL의 드라이버를 의미

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

찾을 수 없습니다. 그래서 시도 : # I이 스크립트에서 의 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 

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 -j odbcinst :

 ['/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.cron.text 

같은 환경 변수를 출력하는 더미 cron 작업을 실행, 이제 다음 명령

printenv > env.normal.text 
을 실행 관련 누락 된 변수 2 개. cron에서 설정하십시오.

+0

감사합니다. 몇 가지 차이점이 있습니다. 아마도 가장 중요한 것은 ** USER **, ** PWD **, ** OLDPWD **, ** ** SH ** ** HOME ** 스크립트에서가 아니라 MySQL Ddiver에서만 오류가 발생합니다. 어떻게 업데이트 할 수 있습니까? – Uncoke

관련 문제