【问题标题】:Python CRON not find the MySQL DriverPython CRON 找不到 MySQL 驱动程序
【发布时间】:2014-11-13 16:57:38
【问题描述】:

我不知道 PYTHON,但我必须在 linux (CentOS6) 服务器上将脚本作为 cronjob 运行,我遇到了一些问题。

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

问题在于它由 CRON 运行时:

/usr/local/bin/python2.7 /home/itsme/cron/demo.py >> /home/itsme/cron/logs/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 /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

如果我从我拥有的脚本中打印 sys.path

       ['/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 驱动程序?

感谢您的帮助。

【问题讨论】:

    标签: python mysql cron pyodbc


    【解决方案1】:

    我认为您的 cron 环境中缺少一些导致此问题的环境变量。

    在您的终端中,运行此脚本的位置,运行以下命令

    printenv > env.normal.text
    

    现在,运行一个虚拟 cron 作业,输出如下环境变量

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

    现在只需比较两者的相关缺失变量即可。将其设置在您的 cron 中。

    【讨论】:

    • 谢谢!我看到了几个不同之处。也许最重要的是:USERPWDOLDPWDSHALLHOME请注意,我只是在 MySql Ddiver 上得到了错误,而不是在脚本上。我如何更新它?
    猜你喜欢
    • 2016-07-14
    • 2013-04-22
    • 2016-04-02
    • 2019-07-25
    • 2019-11-07
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多